summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--plugins/dfinput/pad.c70
-rw-r--r--plugins/dfinput/pad.h2
-rw-r--r--plugins/dfxvideo/draw.c217
-rw-r--r--plugins/dfxvideo/gpu.c4
-rw-r--r--po/fr_FR.po158
-rw-r--r--po/it.po166
-rw-r--r--po/pt_BR.po154
-rw-r--r--po/ru_RU.po158
-rw-r--r--po/zh_CN.po546
-rw-r--r--po/zh_TW.po159
-rw-r--r--win32/plugins/PadSSSPSX/PadSSSPSX.cpp1136
-rw-r--r--win32/plugins/PadSSSPSX/PadSSSPSX.def23
-rw-r--r--win32/plugins/PadSSSPSX/PadSSSPSX.dsp123
-rw-r--r--win32/plugins/PadSSSPSX/PadSSSPSX.h46
-rw-r--r--win32/plugins/PadSSSPSX/PadSSSPSX.rc120
-rw-r--r--win32/plugins/PadSSSPSX/PadSSSPSXres.h60
-rw-r--r--win32/plugins/PadSSSPSX/readmewip.txt48
17 files changed, 2469 insertions, 721 deletions
diff --git a/plugins/dfinput/pad.c b/plugins/dfinput/pad.c
index a0207aab..423e2db0 100644
--- a/plugins/dfinput/pad.c
+++ b/plugins/dfinput/pad.c
@@ -18,6 +18,8 @@
#include "pad.h"
+static void (*gpuVisualVibration)(uint32_t, uint32_t) = NULL;
+
char *PSEgetLibName(void) {
return _("Gamepad/Keyboard Input");
}
@@ -30,13 +32,23 @@ uint32_t PSEgetLibVersion(void) {
return (1 << 16) | (1 << 8);
}
+void PADsetMode(const int pad, const int mode) {
+ g.PadState[pad].PadMode = mode;
+ g.PadState[pad].PadID = mode ? 0x73 : 0x41;
+
+ g.PadState[pad].Vib0 = 0;
+ g.PadState[pad].Vib1 = 0;
+ g.PadState[pad].VibF[0] = 0;
+ g.PadState[pad].VibF[1] = 0;
+}
+
long PADinit(long flags) {
LoadPADConfig();
- g.PadState[0].PadMode = 0;
- g.PadState[0].PadID = 0x41;
- g.PadState[1].PadMode = 0;
- g.PadState[1].PadID = 0x41;
+ PADsetMode(0, 0);
+ PADsetMode(1, 0);
+
+ gpuVisualVibration = NULL;
return PSE_PAD_ERR_SUCCESS;
}
@@ -263,6 +275,26 @@ unsigned char PADpoll(unsigned char value) {
}
switch (CurCmd) {
+ case CMD_READ_DATA_AND_VIBRATE:
+ if (g.cfg.PadDef[CurPad].Type == PSE_PAD_TYPE_ANALOGPAD) {
+ if (CurByte == g.PadState[CurPad].Vib0) {
+ g.PadState[CurPad].VibF[0] = value;
+
+ if (gpuVisualVibration != NULL && (g.PadState[CurPad].VibF[0] != 0 || g.PadState[CurPad].VibF[1] != 0)) {
+ gpuVisualVibration(g.PadState[CurPad].VibF[0], g.PadState[CurPad].VibF[1]);
+ }
+ }
+
+ if (CurByte == g.PadState[CurPad].Vib1) {
+ g.PadState[CurPad].VibF[1] = value;
+
+ if (gpuVisualVibration != NULL && (g.PadState[CurPad].VibF[0] != 0 || g.PadState[CurPad].VibF[1] != 0)) {
+ gpuVisualVibration(g.PadState[CurPad].VibF[0], g.PadState[CurPad].VibF[1]);
+ }
+ }
+ }
+ break;
+
case CMD_CONFIG_MODE:
if (CurByte == 2) {
switch (value) {
@@ -281,8 +313,7 @@ unsigned char PADpoll(unsigned char value) {
case CMD_SET_MODE_AND_LOCK:
if (CurByte == 2) {
- g.PadState[CurPad].PadMode = value;
- g.PadState[CurPad].PadID = value ? 0x73 : 0x41;
+ PADsetMode(CurPad, value);
}
break;
@@ -317,6 +348,29 @@ unsigned char PADpoll(unsigned char value) {
}
}
break;
+
+ case CMD_VIBRATION_TOGGLE:
+ if (CurByte >= 2 && CurByte < CmdLen) {
+ if (CurByte == g.PadState[CurPad].Vib0) {
+ buf[CurByte] = 0;
+ }
+ if (CurByte == g.PadState[CurPad].Vib1) {
+ buf[CurByte] = 1;
+ }
+
+ if (value == 0) {
+ g.PadState[CurPad].Vib0 = CurByte;
+ if ((g.PadState[CurPad].PadID & 0x0f) < (CurByte - 1) / 2) {
+ g.PadState[CurPad].PadID = (g.PadState[CurPad].PadID & 0xf0) + (CurByte - 1) / 2;
+ }
+ } else if (value == 1) {
+ g.PadState[CurPad].Vib1 = CurByte;
+ if ((g.PadState[CurPad].PadID & 0x0f) < (CurByte - 1) / 2) {
+ g.PadState[CurPad].PadID = (g.PadState[CurPad].PadID & 0xf0) + (CurByte - 1) / 2;
+ }
+ }
+ }
+ break;
}
if (CurByte >= CmdLen) return 0;
@@ -368,6 +422,10 @@ long PADkeypressed(void) {
return s;
}
+void PADregisterVibration(void (*callback)(uint32_t, uint32_t)) {
+ gpuVisualVibration = callback;
+}
+
#ifndef _MACOSX
long PADconfigure(void) {
diff --git a/plugins/dfinput/pad.h b/plugins/dfinput/pad.h
index 8347caf8..0362fdcb 100644
--- a/plugins/dfinput/pad.h
+++ b/plugins/dfinput/pad.h
@@ -123,6 +123,8 @@ typedef struct tagPadState {
volatile uint16_t JoyKeyStatus;
volatile uint8_t AnalogStatus[ANALOG_TOTAL][2]; // 0-255 where 127 is center position
volatile uint8_t AnalogKeyStatus[ANALOG_TOTAL][4];
+ uint8_t Vib0, Vib1;
+ volatile uint8_t VibF[2];
} PADSTATE;
typedef struct tagGlobalData {
diff --git a/plugins/dfxvideo/draw.c b/plugins/dfxvideo/draw.c
index db90cdf7..53451ad7 100644
--- a/plugins/dfxvideo/draw.c
+++ b/plugins/dfxvideo/draw.c
@@ -1613,15 +1613,16 @@ void DoBufferSwap(void)
if (iMaintainAspect)
MaintainAspect(&dstx, &dsty, &_w, &_h);
+/*Whistler: too slow/laggy so commented out for now
if(iRumbleTime)
{
- dstx+=((rand()*iRumbleVal)/RAND_MAX)-(iRumbleVal/2);
- _w-=((rand()*iRumbleVal)/RAND_MAX)-(iRumbleVal);
- dsty+=((rand()*iRumbleVal)/RAND_MAX)-(iRumbleVal/2);
- _h-=((rand()*iRumbleVal)/RAND_MAX)-(iRumbleVal/2);
+ dstx += (rand() % iRumbleVal) - iRumbleVal / 2;
+ _w -= (rand() % iRumbleVal) - iRumbleVal / 2;
+ dsty += (rand() % iRumbleVal) - iRumbleVal / 2;
+ _h -= (rand() % iRumbleVal) - iRumbleVal / 2;
iRumbleTime--;
}
-
+*/
XvShmPutImage(display, xv_port, window, hGC, xvi,
0,0, //src x,y
finalw,finalh, //src w,h
@@ -1902,54 +1903,54 @@ static void hq2x_32_def(uint32_t * dst0, uint32_t * dst1, const uint32_t * src0,
mask |= cache_vert_mask[i] << 5; // << 1 << 5 == << 6
mask |= interp_32_diff(c[8], c[4]) << 7;
-#define P0 dst0[0]
-#define P1 dst0[1]
-#define P2 dst1[0]
-#define P3 dst1[1]
-#define MUR interp_32_diff(c[1], c[5])
-#define MDR interp_32_diff(c[5], c[7])
-#define MDL interp_32_diff(c[7], c[3])
-#define MUL interp_32_diff(c[3], c[1])
-#define IC(p0) c[p0]
-#define I11(p0,p1) interp_32_11(c[p0], c[p1])
-#define I211(p0,p1,p2) interp_32_211(c[p0], c[p1], c[p2])
-#define I31(p0,p1) interp_32_31(c[p0], c[p1])
-#define I332(p0,p1,p2) interp_32_332(c[p0], c[p1], c[p2])
-#define I431(p0,p1,p2) interp_32_431(c[p0], c[p1], c[p2])
-#define I521(p0,p1,p2) interp_32_521(c[p0], c[p1], c[p2])
-#define I53(p0,p1) interp_32_53(c[p0], c[p1])
-#define I611(p0,p1,p2) interp_32_611(c[p0], c[p1], c[p2])
-#define I71(p0,p1) interp_32_71(c[p0], c[p1])
-#define I772(p0,p1,p2) interp_32_772(c[p0], c[p1], c[p2])
-#define I97(p0,p1) interp_32_97(c[p0], c[p1])
-#define I1411(p0,p1,p2) interp_32_1411(c[p0], c[p1], c[p2])
-#define I151(p0,p1) interp_32_151(c[p0], c[p1])
-
+#define P0 dst0[0]
+#define P1 dst0[1]
+#define P2 dst1[0]
+#define P3 dst1[1]
+#define MUR interp_32_diff(c[1], c[5])
+#define MDR interp_32_diff(c[5], c[7])
+#define MDL interp_32_diff(c[7], c[3])
+#define MUL interp_32_diff(c[3], c[1])
+#define IC(p0) c[p0]
+#define I11(p0,p1) interp_32_11(c[p0], c[p1])
+#define I211(p0,p1,p2) interp_32_211(c[p0], c[p1], c[p2])
+#define I31(p0,p1) interp_32_31(c[p0], c[p1])
+#define I332(p0,p1,p2) interp_32_332(c[p0], c[p1], c[p2])
+#define I431(p0,p1,p2) interp_32_431(c[p0], c[p1], c[p2])
+#define I521(p0,p1,p2) interp_32_521(c[p0], c[p1], c[p2])
+#define I53(p0,p1) interp_32_53(c[p0], c[p1])
+#define I611(p0,p1,p2) interp_32_611(c[p0], c[p1], c[p2])
+#define I71(p0,p1) interp_32_71(c[p0], c[p1])
+#define I772(p0,p1,p2) interp_32_772(c[p0], c[p1], c[p2])
+#define I97(p0,p1) interp_32_97(c[p0], c[p1])
+#define I1411(p0,p1,p2) interp_32_1411(c[p0], c[p1], c[p2])
+#define I151(p0,p1) interp_32_151(c[p0], c[p1])
+
switch (mask) {
#include "hq2x.h"
- }
-
-#undef P0
-#undef P1
-#undef P2
-#undef P3
-#undef MUR
-#undef MDR
-#undef MDL
-#undef MUL
-#undef IC
-#undef I11
-#undef I211
-#undef I31
-#undef I332
-#undef I431
-#undef I521
-#undef I53
-#undef I611
-#undef I71
-#undef I772
-#undef I97
-#undef I1411
+ }
+
+#undef P0
+#undef P1
+#undef P2
+#undef P3
+#undef MUR
+#undef MDR
+#undef MDL
+#undef MUL
+#undef IC
+#undef I11
+#undef I211
+#undef I31
+#undef I332
+#undef I431
+#undef I521
+#undef I53
+#undef I611
+#undef I71
+#undef I772
+#undef I97
+#undef I1411
#undef I151
src0 += 1;
@@ -2042,66 +2043,66 @@ static void hq3x_32_def(uint32_t* dst0, uint32_t* dst1, uint32_t* dst2, const
cache_vert_mask[i] = interp_32_diff(c[7], c[4]) << 1;
mask |= cache_vert_mask[i] << 5; // << 1 << 5 == << 6
mask |= interp_32_diff(c[8], c[4]) << 7;
-
-#define P0 dst0[0]
-#define P1 dst0[1]
-#define P2 dst0[2]
-#define P3 dst1[0]
-#define P4 dst1[1]
-#define P5 dst1[2]
-#define P6 dst2[0]
-#define P7 dst2[1]
-#define P8 dst2[2]
-#define MUR interp_32_diff(c[1], c[5])
-#define MDR interp_32_diff(c[5], c[7])
-#define MDL interp_32_diff(c[7], c[3])
-#define MUL interp_32_diff(c[3], c[1])
-#define IC(p0) c[p0]
-#define I11(p0,p1) interp_32_11(c[p0], c[p1])
-#define I211(p0,p1,p2) interp_32_211(c[p0], c[p1], c[p2])
-#define I31(p0,p1) interp_32_31(c[p0], c[p1])
-#define I332(p0,p1,p2) interp_32_332(c[p0], c[p1], c[p2])
-#define I431(p0,p1,p2) interp_32_431(c[p0], c[p1], c[p2])
-#define I521(p0,p1,p2) interp_32_521(c[p0], c[p1], c[p2])
-#define I53(p0,p1) interp_32_53(c[p0], c[p1])
-#define I611(p0,p1,p2) interp_32_611(c[p0], c[p1], c[p2])
-#define I71(p0,p1) interp_32_71(c[p0], c[p1])
-#define I772(p0,p1,p2) interp_32_772(c[p0], c[p1], c[p2])
-#define I97(p0,p1) interp_32_97(c[p0], c[p1])
-#define I1411(p0,p1,p2) interp_32_1411(c[p0], c[p1], c[p2])
-#define I151(p0,p1) interp_32_151(c[p0], c[p1])
+
+#define P0 dst0[0]
+#define P1 dst0[1]
+#define P2 dst0[2]
+#define P3 dst1[0]
+#define P4 dst1[1]
+#define P5 dst1[2]
+#define P6 dst2[0]
+#define P7 dst2[1]
+#define P8 dst2[2]
+#define MUR interp_32_diff(c[1], c[5])
+#define MDR interp_32_diff(c[5], c[7])
+#define MDL interp_32_diff(c[7], c[3])
+#define MUL interp_32_diff(c[3], c[1])
+#define IC(p0) c[p0]
+#define I11(p0,p1) interp_32_11(c[p0], c[p1])
+#define I211(p0,p1,p2) interp_32_211(c[p0], c[p1], c[p2])
+#define I31(p0,p1) interp_32_31(c[p0], c[p1])
+#define I332(p0,p1,p2) interp_32_332(c[p0], c[p1], c[p2])
+#define I431(p0,p1,p2) interp_32_431(c[p0], c[p1], c[p2])
+#define I521(p0,p1,p2) interp_32_521(c[p0], c[p1], c[p2])
+#define I53(p0,p1) interp_32_53(c[p0], c[p1])
+#define I611(p0,p1,p2) interp_32_611(c[p0], c[p1], c[p2])
+#define I71(p0,p1) interp_32_71(c[p0], c[p1])
+#define I772(p0,p1,p2) interp_32_772(c[p0], c[p1], c[p2])
+#define I97(p0,p1) interp_32_97(c[p0], c[p1])
+#define I1411(p0,p1,p2) interp_32_1411(c[p0], c[p1], c[p2])
+#define I151(p0,p1) interp_32_151(c[p0], c[p1])
switch (mask) {
#include "hq3x.h"
- }
-
-#undef P0
-#undef P1
-#undef P2
-#undef P3
-#undef P4
-#undef P5
-#undef P6
-#undef P7
-#undef P8
-#undef MUR
-#undef MDR
-#undef MDL
-#undef MUL
-#undef IC
-#undef I11
-#undef I211
-#undef I31
-#undef I332
-#undef I431
-#undef I521
-#undef I53
-#undef I611
-#undef I71
-#undef I772
-#undef I97
-#undef I1411
-#undef I151
+ }
+
+#undef P0
+#undef P1
+#undef P2
+#undef P3
+#undef P4
+#undef P5
+#undef P6
+#undef P7
+#undef P8
+#undef MUR
+#undef MDR
+#undef MDL
+#undef MUL
+#undef IC
+#undef I11
+#undef I211
+#undef I31
+#undef I332
+#undef I431
+#undef I521
+#undef I53
+#undef I611
+#undef I71
+#undef I772
+#undef I97
+#undef I1411
+#undef I151
src0 += 1;
src1 += 1;
diff --git a/plugins/dfxvideo/gpu.c b/plugins/dfxvideo/gpu.c
index e5b911f9..4aa6f230 100644
--- a/plugins/dfxvideo/gpu.c
+++ b/plugins/dfxvideo/gpu.c
@@ -2280,7 +2280,7 @@ void CALLBACK GPUvBlank( int val )
vBlank = val;
}
-void CALLBACK GPUvisualVibration(unsigned long iSmall, unsigned long iBig)
+void CALLBACK GPUvisualVibration(uint32_t iSmall, uint32_t iBig)
{
int iVibVal;
@@ -2291,7 +2291,5 @@ void CALLBACK GPUvisualVibration(unsigned long iSmall, unsigned long iBig)
if(iBig) iRumbleVal=max(4*iVibVal,min(15*iVibVal,((int)iBig *iVibVal)/10));
else iRumbleVal=max(1*iVibVal,min( 3*iVibVal,((int)iSmall*iVibVal)/10));
- srand(timeGetTime()); // init rand (will be used in BufferSwap)
-
iRumbleTime=15; // let the rumble last 16 buffer swaps
}
diff --git a/po/fr_FR.po b/po/fr_FR.po
index 774d54ff..65615d2f 100644
--- a/po/fr_FR.po
+++ b/po/fr_FR.po
@@ -7,14 +7,14 @@ msgid ""
msgstr ""
"Project-Id-Version: pcsxr 1.0\n"
"Report-Msgid-Bugs-To: whistler_wmz@users.sf.net\n"
-"POT-Creation-Date: 2011-01-02 17:37+0800\n"
+"POT-Creation-Date: 2011-01-09 15:27+0800\n"
"PO-Revision-Date: 2010-12-30 12:51+0100\n"
"Last-Translator: Jean-André Santoni <jean.andre.santoni@gmail.com>\n"
"Language-Team: French <jean.andre.santoni@gmail.com>\n"
-"Language: fr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"Language: fr\n"
#: ../data/pcsx.glade2.h:1
msgid ""
@@ -964,27 +964,27 @@ msgstr "Erreur lors de l'ouverture du greffon GPU !"
msgid "Error opening Controller 1 plugin!"
msgstr "Erreur lors de l'ouverture du greffon Contrôleur 1 !"
-#: ../gui/Plugin.c:333
+#: ../gui/Plugin.c:335
msgid "Error opening Controller 2 plugin!"
msgstr "Erreur lors de l'ouverture du greffon Contrôleur 2 !"
-#: ../gui/Plugin.c:413
+#: ../gui/Plugin.c:417
msgid "Error closing CD-ROM plugin!"
msgstr "Erreur lors de la fermeture du greffon CD-ROM !"
-#: ../gui/Plugin.c:415
+#: ../gui/Plugin.c:419
msgid "Error closing SPU plugin!"
msgstr "Erreur lors de la fermeture du greffon SPU !"
-#: ../gui/Plugin.c:417
+#: ../gui/Plugin.c:421
msgid "Error closing Controller 1 Plugin!"
msgstr "Erreur lors de la fermeture du greffon Contrôleur 1 !"
-#: ../gui/Plugin.c:419
+#: ../gui/Plugin.c:423
msgid "Error closing Controller 2 plugin!"
msgstr "Erreur lors de la fermeture du greffon Contrôleur 2 !"
-#: ../gui/Plugin.c:421
+#: ../gui/Plugin.c:425
msgid "Error closing GPU plugin!"
msgstr "Erreur lors de la fermeture du greffon GPU !"
@@ -1052,82 +1052,82 @@ msgstr "Opcode CPE inconnu %02x à la position %08x.\n"
msgid "This file does not appear to be a valid PSX file.\n"
msgstr "Ce fichier n'est pas un fichier PSX valide.\n"
-#: ../libpcsxcore/plugins.c:183
+#: ../libpcsxcore/plugins.c:189
#, c-format
msgid "Error loading %s: %s"
msgstr "Erreur lors du chargement %s : %s"
-#: ../libpcsxcore/plugins.c:235
+#: ../libpcsxcore/plugins.c:243
#, c-format
msgid "Could not load GPU plugin %s!"
msgstr "Impossible de charger le greffon GPU %s !"
-#: ../libpcsxcore/plugins.c:308
+#: ../libpcsxcore/plugins.c:318
#, c-format
msgid "Could not load CD-ROM plugin %s!"
msgstr "Impossible de charger le greffon CD-ROM %s !"
-#: ../libpcsxcore/plugins.c:356
+#: ../libpcsxcore/plugins.c:366
#, c-format
msgid "Could not load SPU plugin %s!"
msgstr "Impossible de charger le greffon SPU %s !"
-#: ../libpcsxcore/plugins.c:493
+#: ../libpcsxcore/plugins.c:505
#, c-format
msgid "Could not load Controller 1 plugin %s!"
msgstr "Impossible de charger le greffon Contrôleur 1 %s !"
-#: ../libpcsxcore/plugins.c:547
+#: ../libpcsxcore/plugins.c:563
#, c-format
msgid "Could not load Controller 2 plugin %s!"
msgstr "Impossible de charger le greffon Contrôleur 2 %s !"
-#: ../libpcsxcore/plugins.c:590
+#: ../libpcsxcore/plugins.c:608
#, c-format
msgid "Could not load NetPlay plugin %s!"
msgstr "Impossible de charger le greffon de jeu en réseau %s !"
-#: ../libpcsxcore/plugins.c:670
+#: ../libpcsxcore/plugins.c:688
#, c-format
msgid "Could not load SIO1 plugin %s!"
msgstr "Impossible de charger le greffon SIO1 %s !"
-#: ../libpcsxcore/plugins.c:755
+#: ../libpcsxcore/plugins.c:773
#, c-format
msgid "Error initializing CD-ROM plugin: %d"
msgstr "Erreur lors de l'initialisation du greffon CD-ROM : %d"
-#: ../libpcsxcore/plugins.c:757
+#: ../libpcsxcore/plugins.c:775
#, c-format
msgid "Error initializing GPU plugin: %d"
msgstr "Erreur lors de l'initialisation du greffon GPU : %d"
-#: ../libpcsxcore/plugins.c:759
+#: ../libpcsxcore/plugins.c:777
#, c-format
msgid "Error initializing SPU plugin: %d"
msgstr "Erreur lors de l'initialisation du greffon SPU : %d"
-#: ../libpcsxcore/plugins.c:761
+#: ../libpcsxcore/plugins.c:779
#, c-format
msgid "Error initializing Controller 1 plugin: %d"
msgstr "Erreur lors de l'initialisation du greffon Contrôleur 1 : %d"
-#: ../libpcsxcore/plugins.c:763
+#: ../libpcsxcore/plugins.c:781
#, c-format
msgid "Error initializing Controller 2 plugin: %d"
msgstr "Erreur lors de l'initialisation du greffon Contrôleur 2 : %d"
-#: ../libpcsxcore/plugins.c:767
+#: ../libpcsxcore/plugins.c:785
#, c-format
msgid "Error initializing NetPlay plugin: %d"
msgstr "Erreur lors de l'initialisation du greffon de jeu en réseau : %d"
-#: ../libpcsxcore/plugins.c:772
+#: ../libpcsxcore/plugins.c:790
#, c-format
msgid "Error initializing SIO1 plugin: %d"
msgstr "Erreur lors de l'initialisation du greffon SIO1 : %d"
-#: ../libpcsxcore/plugins.c:775
+#: ../libpcsxcore/plugins.c:793
msgid "Plugins loaded.\n"
msgstr "Greffons chargés.\n"
@@ -1261,7 +1261,7 @@ msgstr ""
"Threadé - Plus rapide (Avec Cache)"
#: ../plugins/dfcdrom/cdrcfg-0.1df/dfcdrom.glade2.h:24
-#: ../plugins/dfinput/dfinput.glade2.h:8 ../win32/gui/WndMain.c:1307
+#: ../plugins/dfinput/dfinput.ui.h:8 ../win32/gui/WndMain.c:1307
msgid "Options"
msgstr "Options"
@@ -1377,119 +1377,125 @@ msgstr "R-Stick Bas"
msgid "R-Stick Up"
msgstr "R-Stick Haut"
-#: ../plugins/dfinput/cfg-gtk2.c:103 ../plugins/dfinput/cfg-gtk2.c:142
+#: ../plugins/dfinput/cfg-gtk2.c:100 ../plugins/dfinput/cfg-gtk2.c:139
msgid "Centered"
msgstr "Centré"
-#: ../plugins/dfinput/cfg-gtk2.c:103 ../plugins/dfinput/cfg-gtk2.c:142
+#: ../plugins/dfinput/cfg-gtk2.c:100 ../plugins/dfinput/cfg-gtk2.c:139
msgid "Up"
msgstr "Haut"
-#: ../plugins/dfinput/cfg-gtk2.c:103 ../plugins/dfinput/cfg-gtk2.c:142
+#: ../plugins/dfinput/cfg-gtk2.c:100 ../plugins/dfinput/cfg-gtk2.c:139
msgid "Right"
msgstr "Droite"
-#: ../plugins/dfinput/cfg-gtk2.c:103 ../plugins/dfinput/cfg-gtk2.c:142
+#: ../plugins/dfinput/cfg-gtk2.c:100 ../plugins/dfinput/cfg-gtk2.c:139
msgid "Rightup"
msgstr "Droite-haut"
-#: ../plugins/dfinput/cfg-gtk2.c:104 ../plugins/dfinput/cfg-gtk2.c:143
+#: ../plugins/dfinput/cfg-gtk2.c:101 ../plugins/dfinput/cfg-gtk2.c:140
msgid "Down"
msgstr "Bas"
-#: ../plugins/dfinput/cfg-gtk2.c:104 ../plugins/dfinput/cfg-gtk2.c:143
+#: ../plugins/dfinput/cfg-gtk2.c:101 ../plugins/dfinput/cfg-gtk2.c:140
msgid "Rightdown"
msgstr "Droite-bas"
-#: ../plugins/dfinput/cfg-gtk2.c:104 ../plugins/dfinput/cfg-gtk2.c:143
+#: ../plugins/dfinput/cfg-gtk2.c:101 ../plugins/dfinput/cfg-gtk2.c:140
msgid "Left"
msgstr "Gauche"
-#: ../plugins/dfinput/cfg-gtk2.c:104 ../plugins/dfinput/cfg-gtk2.c:143
+#: ../plugins/dfinput/cfg-gtk2.c:101 ../plugins/dfinput/cfg-gtk2.c:140
msgid "Leftup"
msgstr "Gauche-haut"
-#: ../plugins/dfinput/cfg-gtk2.c:105 ../plugins/dfinput/cfg-gtk2.c:144
+#: ../plugins/dfinput/cfg-gtk2.c:102 ../plugins/dfinput/cfg-gtk2.c:141
msgid "Leftdown"
msgstr "Gauche-bas"
-#: ../plugins/dfinput/cfg-gtk2.c:109 ../plugins/dfinput/cfg-gtk2.c:148
+#: ../plugins/dfinput/cfg-gtk2.c:106 ../plugins/dfinput/cfg-gtk2.c:145
#, c-format
msgid "Joystick: Button %d"
msgstr "Joystick : Bouton %d"
-#: ../plugins/dfinput/cfg-gtk2.c:113 ../plugins/dfinput/cfg-gtk2.c:152
+#: ../plugins/dfinput/cfg-gtk2.c:110 ../plugins/dfinput/cfg-gtk2.c:149
#, c-format
msgid "Joystick: Axis %d%c"
msgstr "Joystick: Axe %d%c"
-#: ../plugins/dfinput/cfg-gtk2.c:118 ../plugins/dfinput/cfg-gtk2.c:157
+#: ../plugins/dfinput/cfg-gtk2.c:115 ../plugins/dfinput/cfg-gtk2.c:154
#, c-format
msgid "Joystick: Hat %d %s"
msgstr "Joystick: Tête %d %s"
-#: ../plugins/dfinput/cfg-gtk2.c:133 ../plugins/dfinput/cfg-gtk2.c:172
+#: ../plugins/dfinput/cfg-gtk2.c:130 ../plugins/dfinput/cfg-gtk2.c:169
msgid "Keyboard:"
msgstr "Clavier :"
-#: ../plugins/dfinput/cfg-gtk2.c:137 ../plugins/dfinput/cfg-gtk2.c:176
+#: ../plugins/dfinput/cfg-gtk2.c:134 ../plugins/dfinput/cfg-gtk2.c:173
msgid "(Not Set)"
msgstr "(Non défini)"
-#: ../plugins/dfinput/cfg-gtk2.c:559
+#: ../plugins/dfinput/cfg-gtk2.c:542
#: ../plugins/peopsxgl/gpucfg/peopsxgl.ui.h:55
msgid "None"
msgstr "Aucun"
-#: ../plugins/dfinput/cfg-gtk2.c:601
+#: ../plugins/dfinput/cfg-gtk2.c:584
msgid "Gamepad/Keyboard Input Configuration"
msgstr "Configuration clavier/manette"
-#: ../plugins/dfinput/cfg-gtk2.c:607 ../plugins/dfinput/cfg-gtk2.c:627
+#: ../plugins/dfinput/cfg-gtk2.c:590 ../plugins/dfinput/cfg-gtk2.c:610
msgid "Key"
msgstr "Touche"
-#: ../plugins/dfinput/cfg-gtk2.c:613 ../plugins/dfinput/cfg-gtk2.c:633
+#: ../plugins/dfinput/cfg-gtk2.c:596 ../plugins/dfinput/cfg-gtk2.c:616
msgid "Button"
msgstr "Bouton"
-#: ../plugins/dfinput/dfinput.glade2.h:1
+#: ../plugins/dfinput/dfinput.ui.h:1
+#, fuzzy
+msgid "Analog Pad"
+msgstr ""
+"Pavé digital\n"
+"Pavé analogique"
+
+#: ../plugins/dfinput/dfinput.ui.h:2
msgid "Change"
msgstr "Changer"
-#: ../plugins/dfinput/dfinput.glade2.h:2
+#: ../plugins/dfinput/dfinput.ui.h:3
msgid "Controller 1"
msgstr "Contrôleur 1"
-#: ../plugins/dfinput/dfinput.glade2.h:3
+#: ../plugins/dfinput/dfinput.ui.h:4
msgid "Controller 2"
msgstr "Contrôleur 2"
-#: ../plugins/dfinput/dfinput.glade2.h:4
+#: ../plugins/dfinput/dfinput.ui.h:5
msgid "Device:"
msgstr "Contrôleur :"
-#: ../plugins/dfinput/dfinput.glade2.h:5
-msgid ""
-"Digital Pad\n"
-"Analog Pad"
+#: ../plugins/dfinput/dfinput.ui.h:6
+#, fuzzy
+msgid "Digital Pad"
msgstr ""
"Pavé digital\n"
"Pavé analogique"
-#: ../plugins/dfinput/dfinput.glade2.h:7
+#: ../plugins/dfinput/dfinput.ui.h:7
msgid "Multi-Threaded (Recommended)"
msgstr "Multi-Threadé (Recommandé)"
-#: ../plugins/dfinput/dfinput.glade2.h:9
+#: ../plugins/dfinput/dfinput.ui.h:9
msgid "Reset"
msgstr "Reset"
-#: ../plugins/dfinput/dfinput.glade2.h:10
+#: ../plugins/dfinput/dfinput.ui.h:10
msgid "Type:"
msgstr "Type :"
-#: ../plugins/dfinput/pad.c:22
+#: ../plugins/dfinput/pad.c:24
msgid "Gamepad/Keyboard Input"
msgstr "Entrées clavier/manette"
@@ -1507,28 +1513,28 @@ msgstr "erreur lors de la connection à %s: %s\n"
msgid "Error allocating memory!\n"
msgstr "Erreur d'allocation mémoire !\n"
-#: ../plugins/dfnet/dfnet.glade2.h:1
+#: ../plugins/dfnet/dfnet.ui.h:1
msgid "Client (Player2)"
msgstr "Client (Joueur 2)"
-#: ../plugins/dfnet/dfnet.glade2.h:2
+#: ../plugins/dfnet/dfnet.ui.h:2
msgid "Copy PC IP to Clipboard"
msgstr "Copier l'IP du PC dans le presse-papier"
-#: ../plugins/dfnet/dfnet.glade2.h:3
+#: ../plugins/dfnet/dfnet.ui.h:3
msgid ""
"Do not change if not necessary (remember it must be changed on both sides)."
msgstr "Ne changer que si nécessaire (doit être modifié des deux cotés)."
-#: ../plugins/dfnet/dfnet.glade2.h:4
+#: ../plugins/dfnet/dfnet.ui.h:4
msgid "Play Offline"
msgstr "Jouer hors-ligne"
-#: ../plugins/dfnet/dfnet.glade2.h:5
+#: ../plugins/dfnet/dfnet.ui.h:5
msgid "Port Number"
msgstr "Numéro de port"
-#: ../plugins/dfnet/dfnet.glade2.h:6
+#: ../plugins/dfnet/dfnet.ui.h:6
msgid ""
"Select here if you'll be Server (Player1) or Client (Player2).\n"
"\n"
@@ -1546,24 +1552,24 @@ msgstr ""
"Si vous avez choisi client, veuillez entrer l'adresse IP que le serveur "
"vousaura fournie dans la zone Adresse IP."
-#: ../plugins/dfnet/dfnet.glade2.h:11
+#: ../plugins/dfnet/dfnet.ui.h:11
msgid "Server (Player1)"
msgstr "Serveur (Joueur 1)"
-#: ../plugins/dfnet/dfnet.glade2.h:12
+#: ../plugins/dfnet/dfnet.ui.h:12
msgid "Start Game"
msgstr "Lancer le jeu"
-#: ../plugins/dfnet/gui.c:31 ../plugins/dfnet/gui.c:112
+#: ../plugins/dfnet/gui.c:30 ../plugins/dfnet/gui.c:112
#: ../win32/gui/ConfigurePlugins.c:616
msgid "NetPlay"
msgstr "Jeu en réseau"
-#: ../plugins/dfnet/gui.c:39
+#: ../plugins/dfnet/gui.c:38
msgid "Nothing to configure"
msgstr "Rien à configurer"
-#: ../plugins/dfnet/gui.c:95
+#: ../plugins/dfnet/gui.c:94
#, c-format
msgid "IP %s"
msgstr "IP %s"
@@ -2699,49 +2705,49 @@ msgstr "Erreur au chargement du greffon SPU (%d)"
msgid "Error Opening PAD1 Plugin (%d)"
msgstr "Erreur au chargement du greffon Contrôleur 1 (%d)"
-#: ../win32/gui/plugin.c:291
+#: ../win32/gui/plugin.c:293
#, c-format
msgid "Error Opening PAD2 Plugin (%d)"
msgstr "Erreur au chargement du greffon Contrôleur 2 (%d)"
-#: ../win32/gui/plugin.c:319
+#: ../win32/gui/plugin.c:323
msgid "Error Closing CDR Plugin"
msgstr "Erreur à la fermeture du greffon CDR"
-#: ../win32/gui/plugin.c:321
+#: ../win32/gui/plugin.c:325
msgid "Error Closing GPU Plugin"
msgstr "Erreur à la fermeture du greffon GPU"
-#: ../win32/gui/plugin.c:323
+#: ../win32/gui/plugin.c:327
msgid "Error Closing SPU Plugin"
msgstr "Erreur à la fermeture du greffon SPU"
-#: ../win32/gui/plugin.c:341
+#: ../win32/gui/plugin.c:345
#, c-format
msgid "CDRinit error: %d"
msgstr "Erreur lors de l'initialisation du greffon CDR : %d"
-#: ../win32/gui/plugin.c:343
+#: ../win32/gui/plugin.c:347
#, c-format
msgid "GPUinit error: %d"
msgstr "Erreur lors de l'initialisation du greffon GPU : %d"
-#: ../win32/gui/plugin.c:345
+#: ../win32/gui/plugin.c:349
#, c-format
msgid "SPUinit error: %d"
msgstr "Erreur lors de l'initialisation du greffon SPU : %d"
-#: ../win32/gui/plugin.c:347
+#: ../win32/gui/plugin.c:351
#, c-format
msgid "PAD1init error: %d"
msgstr "Erreur lors de l'initialisation du greffon Contrôleur 1 : %d"
-#: ../win32/gui/plugin.c:349
+#: ../win32/gui/plugin.c:353
#, c-format
msgid "PAD2init error: %d"
msgstr "Erreur lors de l'initialisation du greffon Contrôleur 2 : %d"
-#: ../win32/gui/plugin.c:352
+#: ../win32/gui/plugin.c:356
#, c-format
msgid "NETinit error: %d"
msgstr "Erreur lors de l'initialisation du greffon de jeu en réseau : %d"
diff --git a/po/it.po b/po/it.po
index 44d3e2ff..e463f050 100644
--- a/po/it.po
+++ b/po/it.po
@@ -7,14 +7,14 @@ msgid ""
msgstr ""
"Project-Id-Version: pcsxr 1.0\n"
"Report-Msgid-Bugs-To: whistler_wmz@users.sf.net\n"
-"POT-Creation-Date: 2011-01-02 17:37+0800\n"
+"POT-Creation-Date: 2011-01-09 15:27+0800\n"
"PO-Revision-Date: 2010-03-15 16:00+0200\n"
"Last-Translator: Giovanni Scafora <giovanni@archlinux.org>\n"
"Language-Team: Arch Linux Italian Team <giovanni@archlinux.org>\n"
-"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"Language: \n"
#: ../data/pcsx.glade2.h:1
msgid ""
@@ -991,30 +991,30 @@ msgid "Error opening Controller 1 plugin!"
msgstr ""
"Si è verificato un errore durante l'apertura del plugin del controller 1!"
-#: ../gui/Plugin.c:333
+#: ../gui/Plugin.c:335
msgid "Error opening Controller 2 plugin!"
msgstr ""
"Si è verificato un errore durante l'apertura del plugin del controller 2!"
-#: ../gui/Plugin.c:413
+#: ../gui/Plugin.c:417
msgid "Error closing CD-ROM plugin!"
msgstr "Si è verificato un errore durante la chiusura del plugin del CD-ROM!"
-#: ../gui/Plugin.c:415
+#: ../gui/Plugin.c:419
msgid "Error closing SPU plugin!"
msgstr "Si è verificato un errore durante la chiusura del plugin della SPU!"
-#: ../gui/Plugin.c:417
+#: ../gui/Plugin.c:421
msgid "Error closing Controller 1 Plugin!"
msgstr ""
"Si è verificato un errore durante la chiusura del plugin del controller 1!"
-#: ../gui/Plugin.c:419
+#: ../gui/Plugin.c:423
msgid "Error closing Controller 2 plugin!"
msgstr ""
"Si è verificato un errore durante la chiusura del plugin del controller 2!"
-#: ../gui/Plugin.c:421
+#: ../gui/Plugin.c:425
msgid "Error closing GPU plugin!"
msgstr "Si è verificato un errore durante la chiusura del plugin della GPU!"
@@ -1082,93 +1082,93 @@ msgstr "Opcode CPE sconosciuto %02x alla posizione %08x.\n"
msgid "This file does not appear to be a valid PSX file.\n"
msgstr "Questo file non sembra essere un file valido di PSX.\n"
-#: ../libpcsxcore/plugins.c:183
+#: ../libpcsxcore/plugins.c:189
#, c-format
msgid "Error loading %s: %s"
msgstr "Si è verificato un errore durante il caricamento di %s: %s"
-#: ../libpcsxcore/plugins.c:235
+#: ../libpcsxcore/plugins.c:243
#, c-format
msgid "Could not load GPU plugin %s!"
msgstr "Impossibile caricare il plugin %s della GPU!"
-#: ../libpcsxcore/plugins.c:308
+#: ../libpcsxcore/plugins.c:318
#, c-format
msgid "Could not load CD-ROM plugin %s!"
msgstr "Impossibile caricare il plugin %s del CD-ROM!"
-#: ../libpcsxcore/plugins.c:356
+#: ../libpcsxcore/plugins.c:366
#, c-format
msgid "Could not load SPU plugin %s!"
msgstr "Impossibile caricare il plugin %s della SPU!"
-#: ../libpcsxcore/plugins.c:493
+#: ../libpcsxcore/plugins.c:505
#, c-format
msgid "Could not load Controller 1 plugin %s!"
msgstr "Impossibile caricare il plugin %s del controller 1!"
-#: ../libpcsxcore/plugins.c:547
+#: ../libpcsxcore/plugins.c:563
#, c-format
msgid "Could not load Controller 2 plugin %s!"
msgstr "Impossibile caricare il plugin %s del controller 2!"
-#: ../libpcsxcore/plugins.c:590
+#: ../libpcsxcore/plugins.c:608
#, c-format
msgid "Could not load NetPlay plugin %s!"
msgstr "Impossibile caricare il plugin %s di NetPlay!"
-#: ../libpcsxcore/plugins.c:670
+#: ../libpcsxcore/plugins.c:688
#, fuzzy, c-format
msgid "Could not load SIO1 plugin %s!"
msgstr "Impossibile caricare il plugin %s della SPU!"
-#: ../libpcsxcore/plugins.c:755
+#: ../libpcsxcore/plugins.c:773
#, c-format
msgid "Error initializing CD-ROM plugin: %d"
msgstr ""
-"Si è verificato un errore durante l'inizializzazione del plugin del CD-ROM: "
-"%d"
+"Si è verificato un errore durante l'inizializzazione del plugin del CD-ROM: %"
+"d"
-#: ../libpcsxcore/plugins.c:757
+#: ../libpcsxcore/plugins.c:775
#, c-format
msgid "Error initializing GPU plugin: %d"
msgstr ""
"Si è verificato un errore durante l'inizializzazione del plugin della GPU: %d"
-#: ../libpcsxcore/plugins.c:759
+#: ../libpcsxcore/plugins.c:777
#, c-format
msgid "Error initializing SPU plugin: %d"
msgstr ""
"Si è verificato un errore durante l'inizializzazione del plugin della SPU: %d"
-#: ../libpcsxcore/plugins.c:761
+#: ../libpcsxcore/plugins.c:779
#, c-format
msgid "Error initializing Controller 1 plugin: %d"
msgstr ""
"Si è verificato un errore durante l'inizializzazione del plugin del "
"controller 1: %d"
-#: ../libpcsxcore/plugins.c:763
+#: ../libpcsxcore/plugins.c:781
#, c-format
msgid "Error initializing Controller 2 plugin: %d"
msgstr ""
"Si è verificato un errore durante l'inizializzazione del plugin del "
"controller 2: %d"
-#: ../libpcsxcore/plugins.c:767
+#: ../libpcsxcore/plugins.c:785
#, c-format
msgid "Error initializing NetPlay plugin: %d"
msgstr ""
-"Si è verificato un errore durante l'inizializzazione del plugin di NetPlay: "
-"%d"
+"Si è verificato un errore durante l'inizializzazione del plugin di NetPlay: %"
+"d"
-#: ../libpcsxcore/plugins.c:772
+#: ../libpcsxcore/plugins.c:790
#, fuzzy, c-format
msgid "Error initializing SIO1 plugin: %d"
msgstr ""
"Si è verificato un errore durante l'inizializzazione del plugin della SPU: %d"
-#: ../libpcsxcore/plugins.c:775
+#: ../libpcsxcore/plugins.c:793
msgid "Plugins loaded.\n"
msgstr "Plugin caricati.\n"
@@ -1303,7 +1303,7 @@ msgstr ""
"Threaded, veloce (con la cache)"
#: ../plugins/dfcdrom/cdrcfg-0.1df/dfcdrom.glade2.h:24
-#: ../plugins/dfinput/dfinput.glade2.h:8 ../win32/gui/WndMain.c:1307
+#: ../plugins/dfinput/dfinput.ui.h:8 ../win32/gui/WndMain.c:1307
msgid "Options"
msgstr "Opzioni"
@@ -1419,119 +1419,125 @@ msgstr "R-Stick Giù"
msgid "R-Stick Up"
msgstr "R-Stick Su"
-#: ../plugins/dfinput/cfg-gtk2.c:103 ../plugins/dfinput/cfg-gtk2.c:142
+#: ../plugins/dfinput/cfg-gtk2.c:100 ../plugins/dfinput/cfg-gtk2.c:139
msgid "Centered"
msgstr "Centrato"
-#: ../plugins/dfinput/cfg-gtk2.c:103 ../plugins/dfinput/cfg-gtk2.c:142
+#: ../plugins/dfinput/cfg-gtk2.c:100 ../plugins/dfinput/cfg-gtk2.c:139
msgid "Up"
msgstr "Su"
-#: ../plugins/dfinput/cfg-gtk2.c:103 ../plugins/dfinput/cfg-gtk2.c:142
+#: ../plugins/dfinput/cfg-gtk2.c:100 ../plugins/dfinput/cfg-gtk2.c:139
msgid "Right"
msgstr "Destra"
-#: ../plugins/dfinput/cfg-gtk2.c:103 ../plugins/dfinput/cfg-gtk2.c:142
+#: ../plugins/dfinput/cfg-gtk2.c:100 ../plugins/dfinput/cfg-gtk2.c:139
msgid "Rightup"
msgstr "In alto a destra"
-#: ../plugins/dfinput/cfg-gtk2.c:104 ../plugins/dfinput/cfg-gtk2.c:143
+#: ../plugins/dfinput/cfg-gtk2.c:101 ../plugins/dfinput/cfg-gtk2.c:140
msgid "Down"
msgstr "Giù"
-#: ../plugins/dfinput/cfg-gtk2.c:104 ../plugins/dfinput/cfg-gtk2.c:143
+#: ../plugins/dfinput/cfg-gtk2.c:101 ../plugins/dfinput/cfg-gtk2.c:140
msgid "Rightdown"
msgstr "In basso a destra"
-#: ../plugins/dfinput/cfg-gtk2.c:104 ../plugins/dfinput/cfg-gtk2.c:143
+#: ../plugins/dfinput/cfg-gtk2.c:101 ../plugins/dfinput/cfg-gtk2.c:140
msgid "Left"
msgstr "Sinistra"
-#: ../plugins/dfinput/cfg-gtk2.c:104 ../plugins/dfinput/cfg-gtk2.c:143
+#: ../plugins/dfinput/cfg-gtk2.c:101 ../plugins/dfinput/cfg-gtk2.c:140
msgid "Leftup"
msgstr "In alto a sinistra"
-#: ../plugins/dfinput/cfg-gtk2.c:105 ../plugins/dfinput/cfg-gtk2.c:144
+#: ../plugins/dfinput/cfg-gtk2.c:102 ../plugins/dfinput/cfg-gtk2.c:141
msgid "Leftdown"
msgstr "In basso a sinistra"
-#: ../plugins/dfinput/cfg-gtk2.c:109 ../plugins/dfinput/cfg-gtk2.c:148
+#: ../plugins/dfinput/cfg-gtk2.c:106 ../plugins/dfinput/cfg-gtk2.c:145
#, c-format
msgid "Joystick: Button %d"
msgstr "Joystick: Pulsante %d"
-#: ../plugins/dfinput/cfg-gtk2.c:113 ../plugins/dfinput/cfg-gtk2.c:152
+#: ../plugins/dfinput/cfg-gtk2.c:110 ../plugins/dfinput/cfg-gtk2.c:149
#, c-format
msgid "Joystick: Axis %d%c"
msgstr "Joystick: Asse %d%c"
-#: ../plugins/dfinput/cfg-gtk2.c:118 ../plugins/dfinput/cfg-gtk2.c:157
+#: ../plugins/dfinput/cfg-gtk2.c:115 ../plugins/dfinput/cfg-gtk2.c:154
#, c-format
msgid "Joystick: Hat %d %s"
msgstr "Joystick: hat %d %s"
-#: ../plugins/dfinput/cfg-gtk2.c:133 ../plugins/dfinput/cfg-gtk2.c:172
+#: ../plugins/dfinput/cfg-gtk2.c:130 ../plugins/dfinput/cfg-gtk2.c:169
msgid "Keyboard:"
msgstr "Tastiera:"
-#: ../plugins/dfinput/cfg-gtk2.c:137 ../plugins/dfinput/cfg-gtk2.c:176
+#: ../plugins/dfinput/cfg-gtk2.c:134 ../plugins/dfinput/cfg-gtk2.c:173
msgid "(Not Set)"
msgstr "(Nessuna impostazione)"
-#: ../plugins/dfinput/cfg-gtk2.c:559
+#: ../plugins/dfinput/cfg-gtk2.c:542
#: ../plugins/peopsxgl/gpucfg/peopsxgl.ui.h:55
msgid "None"
msgstr "Nessuno"
-#: ../plugins/dfinput/cfg-gtk2.c:601
+#: ../plugins/dfinput/cfg-gtk2.c:584
msgid "Gamepad/Keyboard Input Configuration"
msgstr "Configurazione input del gamepad/tastiera"
-#: ../plugins/dfinput/cfg-gtk2.c:607 ../plugins/dfinput/cfg-gtk2.c:627
+#: ../plugins/dfinput/cfg-gtk2.c:590 ../plugins/dfinput/cfg-gtk2.c:610
msgid "Key"
msgstr "Tasto"
-#: ../plugins/dfinput/cfg-gtk2.c:613 ../plugins/dfinput/cfg-gtk2.c:633
+#: ../plugins/dfinput/cfg-gtk2.c:596 ../plugins/dfinput/cfg-gtk2.c:616
msgid "Button"
msgstr "Pulsante"
-#: ../plugins/dfinput/dfinput.glade2.h:1
+#: ../plugins/dfinput/dfinput.ui.h:1
+#, fuzzy
+msgid "Analog Pad"
+msgstr ""
+"Pad digitale\n"
+"Pad analogico"
+
+#: ../plugins/dfinput/dfinput.ui.h:2
msgid "Change"
msgstr "Cambia"
-#: ../plugins/dfinput/dfinput.glade2.h:2
+#: ../plugins/dfinput/dfinput.ui.h:3
msgid "Controller 1"
msgstr "Controller 1"
-#: ../plugins/dfinput/dfinput.glade2.h:3
+#: ../plugins/dfinput/dfinput.ui.h:4
msgid "Controller 2"
msgstr "Controller 2"
-#: ../plugins/dfinput/dfinput.glade2.h:4
+#: ../plugins/dfinput/dfinput.ui.h:5
msgid "Device:"
msgstr "Dispositivo:"
-#: ../plugins/dfinput/dfinput.glade2.h:5
-msgid ""
-"Digital Pad\n"
-"Analog Pad"
+#: ../plugins/dfinput/dfinput.ui.h:6
+#, fuzzy
+msgid "Digital Pad"
msgstr ""
"Pad digitale\n"
"Pad analogico"
-#: ../plugins/dfinput/dfinput.glade2.h:7
+#: ../plugins/dfinput/dfinput.ui.h:7
msgid "Multi-Threaded (Recommended)"
msgstr "Multi-Threaded (consigliato)"
-#: ../plugins/dfinput/dfinput.glade2.h:9
+#: ../plugins/dfinput/dfinput.ui.h:9
msgid "Reset"
msgstr "Resetta"
-#: ../plugins/dfinput/dfinput.glade2.h:10
+#: ../plugins/dfinput/dfinput.ui.h:10
msgid "Type:"
msgstr "Tipo:"
-#: ../plugins/dfinput/pad.c:22
+#: ../plugins/dfinput/pad.c:24
msgid "Gamepad/Keyboard Input"
msgstr "Input del gamepad/tastiera"
@@ -1551,28 +1557,28 @@ msgstr "Si è verificato un errore durante il caricamento di %s: %s"
msgid "Error allocating memory!\n"
msgstr "Si è verificato un errore durante l'allocazione della memoria!"
-#: ../plugins/dfnet/dfnet.glade2.h:1
+#: ../plugins/dfnet/dfnet.ui.h:1
msgid "Client (Player2)"
msgstr ""
-#: ../plugins/dfnet/dfnet.glade2.h:2
+#: ../plugins/dfnet/dfnet.ui.h:2
msgid "Copy PC IP to Clipboard"
msgstr ""
-#: ../plugins/dfnet/dfnet.glade2.h:3
+#: ../plugins/dfnet/dfnet.ui.h:3
msgid ""
"Do not change if not necessary (remember it must be changed on both sides)."
msgstr ""
-#: ../plugins/dfnet/dfnet.glade2.h:4
+#: ../plugins/dfnet/dfnet.ui.h:4
msgid "Play Offline"
msgstr ""
-#: ../plugins/dfnet/dfnet.glade2.h:5
+#: ../plugins/dfnet/dfnet.ui.h:5
msgid "Port Number"
msgstr ""
-#: ../plugins/dfnet/dfnet.glade2.h:6
+#: ../plugins/dfnet/dfnet.ui.h:6
msgid ""
"Select here if you'll be Server (Player1) or Client (Player2).\n"
"\n"
@@ -1583,25 +1589,25 @@ msgid ""
"the IP Address Control."
msgstr ""
-#: ../plugins/dfnet/dfnet.glade2.h:11
+#: ../plugins/dfnet/dfnet.ui.h:11
msgid "Server (Player1)"
msgstr ""
-#: ../plugins/dfnet/dfnet.glade2.h:12
+#: ../plugins/dfnet/dfnet.ui.h:12
#, fuzzy
msgid "Start Game"
msgstr "Tasto Start"
-#: ../plugins/dfnet/gui.c:31 ../plugins/dfnet/gui.c:112
+#: ../plugins/dfnet/gui.c:30 ../plugins/dfnet/gui.c:112
#: ../win32/gui/ConfigurePlugins.c:616
msgid "NetPlay"
msgstr "NetPlay"
-#: ../plugins/dfnet/gui.c:39
+#: ../plugins/dfnet/gui.c:38
msgid "Nothing to configure"
msgstr ""
-#: ../plugins/dfnet/gui.c:95
+#: ../plugins/dfnet/gui.c:94
#, c-format
msgid "IP %s"
msgstr ""
@@ -2787,49 +2793,49 @@ msgstr "Si è verificato un errore durante l'apertura del plugin della SPU (%d)"
msgid "Error Opening PAD1 Plugin (%d)"
msgstr "Si è verificato un errore durante l'apertura del plugin del PAD1 (%d)"
-#: ../win32/gui/plugin.c:291
+#: ../win32/gui/plugin.c:293
#, c-format
msgid "Error Opening PAD2 Plugin (%d)"
msgstr "Si è verificato un errore durante l'apertura del plugin del PAD2 (%d)"
-#: ../win32/gui/plugin.c:319
+#: ../win32/gui/plugin.c:323
msgid "Error Closing CDR Plugin"
msgstr "Si è verificato un errore durante la chiusura del plugin del CD-ROM"
-#: ../win32/gui/plugin.c:321
+#: ../win32/gui/plugin.c:325
msgid "Error Closing GPU Plugin"
msgstr "Si è verificato un errore durante la chiusura del plugin della GPU"
-#: ../win32/gui/plugin.c:323
+#: ../win32/gui/plugin.c:327
msgid "Error Closing SPU Plugin"
msgstr "Si è verificato un errore durante la chiusura del plugin della SPU"
-#: ../win32/gui/plugin.c:341
+#: ../win32/gui/plugin.c:345
#, c-format
msgid "CDRinit error: %d"
msgstr "CDRinit errore: %d"
-#: ../win32/gui/plugin.c:343
+#: ../win32/gui/plugin.c:347
#, c-format
msgid "GPUinit error: %d"
msgstr "GPUinit errore: %d"
-#: ../win32/gui/plugin.c:345
+#: ../win32/gui/plugin.c:349
#, c-format
msgid "SPUinit error: %d"
msgstr "SPUinit errore: %d"
-#: ../win32/gui/plugin.c:347
+#: ../win32/gui/plugin.c:351
#, c-format
msgid "PAD1init error: %d"
msgstr "PAD1init errore: %d"
-#: ../win32/gui/plugin.c:349
+#: ../win32/gui/plugin.c:353
#, c-format
msgid "PAD2init error: %d"
msgstr "PAD2init errore: %d"
-#: ../win32/gui/plugin.c:352
+#: ../win32/gui/plugin.c:356
#, c-format
msgid "NETinit error: %d"
msgstr "NETinit errore: %d"
diff --git a/po/pt_BR.po b/po/pt_BR.po
index 55a4ed42..c9a2672b 100644
--- a/po/pt_BR.po
+++ b/po/pt_BR.po
@@ -5,14 +5,14 @@ msgid ""
msgstr ""
"Project-Id-Version: pcsx-df\n"
"Report-Msgid-Bugs-To: whistler_wmz@users.sf.net\n"
-"POT-Creation-Date: 2011-01-02 17:37+0800\n"
+"POT-Creation-Date: 2011-01-09 15:27+0800\n"
"PO-Revision-Date: 2009-11-28 23:57+0700\n"
"Last-Translator: Wei Mingzhi <whistler@openoffice.org>\n"
"Language-Team: PoBRE <romhackers@gmail.com>\n"
-"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"Language: \n"
"X-Generator: KBabel 1.11.2\n"
#: ../data/pcsx.glade2.h:1
@@ -984,27 +984,27 @@ msgstr "Erro ao abrir a extensão de GPU!"
msgid "Error opening Controller 1 plugin!"
msgstr "Erro ao abrir a extensão do Controle 1!"
-#: ../gui/Plugin.c:333
+#: ../gui/Plugin.c:335
msgid "Error opening Controller 2 plugin!"
msgstr "Erro ao abrir a extensão do Controle 2!"
-#: ../gui/Plugin.c:413
+#: ../gui/Plugin.c:417
msgid "Error closing CD-ROM plugin!"
msgstr "Erro ao fechar a extensão de CD-ROM!"
-#: ../gui/Plugin.c:415
+#: ../gui/Plugin.c:419
msgid "Error closing SPU plugin!"
msgstr "Erro ao fechar a extensão de SPU!"
-#: ../gui/Plugin.c:417
+#: ../gui/Plugin.c:421
msgid "Error closing Controller 1 Plugin!"
msgstr "Erro ao fechar a extensão do Controle 1!"
-#: ../gui/Plugin.c:419
+#: ../gui/Plugin.c:423
msgid "Error closing Controller 2 plugin!"
msgstr "Erro ao fechar a extensão de Controle 2!"
-#: ../gui/Plugin.c:421
+#: ../gui/Plugin.c:425
msgid "Error closing GPU plugin!"
msgstr "Erro ao fechar a extensão de GPU!"
@@ -1072,82 +1072,82 @@ msgstr "Código operacional CPE %02x desconhecido, na posição %08x.\n"
msgid "This file does not appear to be a valid PSX file.\n"
msgstr "Esse arquivo não parece ser um arquivo válido de PSX!\n"
-#: ../libpcsxcore/plugins.c:183
+#: ../libpcsxcore/plugins.c:189
#, c-format
msgid "Error loading %s: %s"
msgstr "Erro carregando \"%s\": \"%s\""
-#: ../libpcsxcore/plugins.c:235
+#: ../libpcsxcore/plugins.c:243
#, c-format
msgid "Could not load GPU plugin %s!"
msgstr "Não conseguiu carregar a extensão de GPU \"%s\"!"
-#: ../libpcsxcore/plugins.c:308
+#: ../libpcsxcore/plugins.c:318
#, c-format
msgid "Could not load CD-ROM plugin %s!"
msgstr "Não conseguiu carregar a extensão de CD-ROM \"%s\"!"
-#: ../libpcsxcore/plugins.c:356
+#: ../libpcsxcore/plugins.c:366
#, c-format
msgid "Could not load SPU plugin %s!"
msgstr "Não conseguiu carregar a extensão de SPU \"%s\"!"
-#: ../libpcsxcore/plugins.c:493
+#: ../libpcsxcore/plugins.c:505
#, c-format
msgid "Could not load Controller 1 plugin %s!"
msgstr "Não conseguiu carregar a extensão do Controle 1 \"%s\"!"
-#: ../libpcsxcore/plugins.c:547
+#: ../libpcsxcore/plugins.c:563
#, c-format
msgid "Could not load Controller 2 plugin %s!"
msgstr "Não conseguiu carregar a extensão do Controle 2 \"%s\"!"
-#: ../libpcsxcore/plugins.c:590
+#: ../libpcsxcore/plugins.c:608
#, c-format
msgid "Could not load NetPlay plugin %s!"
msgstr "Não conseguiu carregar a extensão de jogo em rede \"%s\"!"
-#: ../libpcsxcore/plugins.c:670
+#: ../libpcsxcore/plugins.c:688
#, fuzzy, c-format
msgid "Could not load SIO1 plugin %s!"
msgstr "Não conseguiu carregar a extensão de SPU \"%s\"!"
-#: ../libpcsxcore/plugins.c:755
+#: ../libpcsxcore/plugins.c:773
#, c-format
msgid "Error initializing CD-ROM plugin: %d"
msgstr "Erro ao iniciar a extensão de CD-ROM \"%d\"!"
-#: ../libpcsxcore/plugins.c:757
+#: ../libpcsxcore/plugins.c:775
#, c-format
msgid "Error initializing GPU plugin: %d"
msgstr "Erro ao iniciar a extensão de GPU \"%d\"!"
-#: ../libpcsxcore/plugins.c:759
+#: ../libpcsxcore/plugins.c:777
#, c-format
msgid "Error initializing SPU plugin: %d"
msgstr "Erro ao iniciar a extensão de SPU \"%d\"!"
-#: ../libpcsxcore/plugins.c:761
+#: ../libpcsxcore/plugins.c:779
#, c-format
msgid "Error initializing Controller 1 plugin: %d"
msgstr "Erro ao iniciar a extensão do Controle 1 \"%d\"!"
-#: ../libpcsxcore/plugins.c:763
+#: ../libpcsxcore/plugins.c:781
#, c-format
msgid "Error initializing Controller 2 plugin: %d"
msgstr "Erro ao iniciar a extensão do Controle 2 \"%d\"!"
-#: ../libpcsxcore/plugins.c:767
+#: ../libpcsxcore/plugins.c:785
#, c-format
msgid "Error initializing NetPlay plugin: %d"
msgstr "Erro ao iniciar a extensão de jogo em rede \"%d\"!"
-#: ../libpcsxcore/plugins.c:772
+#: ../libpcsxcore/plugins.c:790
#, fuzzy, c-format
msgid "Error initializing SIO1 plugin: %d"
msgstr "Erro ao iniciar a extensão de SPU \"%d\"!"
-#: ../libpcsxcore/plugins.c:775
+#: ../libpcsxcore/plugins.c:793
msgid "Plugins loaded.\n"
msgstr "Extensões carregadas.\n"
@@ -1262,7 +1262,7 @@ msgid ""
msgstr ""
#: ../plugins/dfcdrom/cdrcfg-0.1df/dfcdrom.glade2.h:24
-#: ../plugins/dfinput/dfinput.glade2.h:8 ../win32/gui/WndMain.c:1307
+#: ../plugins/dfinput/dfinput.ui.h:8 ../win32/gui/WndMain.c:1307
msgid "Options"
msgstr "Opções"
@@ -1378,117 +1378,119 @@ msgstr ""
msgid "R-Stick Up"
msgstr ""
-#: ../plugins/dfinput/cfg-gtk2.c:103 ../plugins/dfinput/cfg-gtk2.c:142
+#: ../plugins/dfinput/cfg-gtk2.c:100 ../plugins/dfinput/cfg-gtk2.c:139
msgid "Centered"
msgstr ""
-#: ../plugins/dfinput/cfg-gtk2.c:103 ../plugins/dfinput/cfg-gtk2.c:142
+#: ../plugins/dfinput/cfg-gtk2.c:100 ../plugins/dfinput/cfg-gtk2.c:139
msgid "Up"
msgstr ""
-#: ../plugins/dfinput/cfg-gtk2.c:103 ../plugins/dfinput/cfg-gtk2.c:142
+#: ../plugins/dfinput/cfg-gtk2.c:100 ../plugins/dfinput/cfg-gtk2.c:139
msgid "Right"
msgstr ""
-#: ../plugins/dfinput/cfg-gtk2.c:103 ../plugins/dfinput/cfg-gtk2.c:142
+#: ../plugins/dfinput/cfg-gtk2.c:100 ../plugins/dfinput/cfg-gtk2.c:139
msgid "Rightup"
msgstr ""
-#: ../plugins/dfinput/cfg-gtk2.c:104 ../plugins/dfinput/cfg-gtk2.c:143
+#: ../plugins/dfinput/cfg-gtk2.c:101 ../plugins/dfinput/cfg-gtk2.c:140
msgid "Down"
msgstr ""
-#: ../plugins/dfinput/cfg-gtk2.c:104 ../plugins/dfinput/cfg-gtk2.c:143
+#: ../plugins/dfinput/cfg-gtk2.c:101 ../plugins/dfinput/cfg-gtk2.c:140
msgid "Rightdown"
msgstr ""
-#: ../plugins/dfinput/cfg-gtk2.c:104 ../plugins/dfinput/cfg-gtk2.c:143
+#: ../plugins/dfinput/cfg-gtk2.c:101 ../plugins/dfinput/cfg-gtk2.c:140
msgid "Left"
msgstr ""
-#: ../plugins/dfinput/cfg-gtk2.c:104 ../plugins/dfinput/cfg-gtk2.c:143
+#: ../plugins/dfinput/cfg-gtk2.c:101 ../plugins/dfinput/cfg-gtk2.c:140
msgid "Leftup"
msgstr ""
-#: ../plugins/dfinput/cfg-gtk2.c:105 ../plugins/dfinput/cfg-gtk2.c:144
+#: ../plugins/dfinput/cfg-gtk2.c:102 ../plugins/dfinput/cfg-gtk2.c:141
msgid "Leftdown"
msgstr ""
-#: ../plugins/dfinput/cfg-gtk2.c:109 ../plugins/dfinput/cfg-gtk2.c:148
+#: ../plugins/dfinput/cfg-gtk2.c:106 ../plugins/dfinput/cfg-gtk2.c:145
#, c-format
msgid "Joystick: Button %d"
msgstr ""
-#: ../plugins/dfinput/cfg-gtk2.c:113 ../plugins/dfinput/cfg-gtk2.c:152
+#: ../plugins/dfinput/cfg-gtk2.c:110 ../plugins/dfinput/cfg-gtk2.c:149
#, c-format
msgid "Joystick: Axis %d%c"
msgstr ""
-#: ../plugins/dfinput/cfg-gtk2.c:118 ../plugins/dfinput/cfg-gtk2.c:157
+#: ../plugins/dfinput/cfg-gtk2.c:115 ../plugins/dfinput/cfg-gtk2.c:154
#, c-format
msgid "Joystick: Hat %d %s"
msgstr ""
-#: ../plugins/dfinput/cfg-gtk2.c:133 ../plugins/dfinput/cfg-gtk2.c:172
+#: ../plugins/dfinput/cfg-gtk2.c:130 ../plugins/dfinput/cfg-gtk2.c:169
msgid "Keyboard:"
msgstr ""
-#: ../plugins/dfinput/cfg-gtk2.c:137 ../plugins/dfinput/cfg-gtk2.c:176
+#: ../plugins/dfinput/cfg-gtk2.c:134 ../plugins/dfinput/cfg-gtk2.c:173
msgid "(Not Set)"
msgstr ""
-#: ../plugins/dfinput/cfg-gtk2.c:559
+#: ../plugins/dfinput/cfg-gtk2.c:542
#: ../plugins/peopsxgl/gpucfg/peopsxgl.ui.h:55
msgid "None"
msgstr ""
-#: ../plugins/dfinput/cfg-gtk2.c:601
+#: ../plugins/dfinput/cfg-gtk2.c:584
msgid "Gamepad/Keyboard Input Configuration"
msgstr ""
-#: ../plugins/dfinput/cfg-gtk2.c:607 ../plugins/dfinput/cfg-gtk2.c:627
+#: ../plugins/dfinput/cfg-gtk2.c:590 ../plugins/dfinput/cfg-gtk2.c:610
msgid "Key"
msgstr ""
-#: ../plugins/dfinput/cfg-gtk2.c:613 ../plugins/dfinput/cfg-gtk2.c:633
+#: ../plugins/dfinput/cfg-gtk2.c:596 ../plugins/dfinput/cfg-gtk2.c:616
msgid "Button"
msgstr ""
-#: ../plugins/dfinput/dfinput.glade2.h:1
+#: ../plugins/dfinput/dfinput.ui.h:1
+msgid "Analog Pad"
+msgstr ""
+
+#: ../plugins/dfinput/dfinput.ui.h:2
msgid "Change"
msgstr ""
-#: ../plugins/dfinput/dfinput.glade2.h:2
+#: ../plugins/dfinput/dfinput.ui.h:3
msgid "Controller 1"
msgstr "Controle 1"
-#: ../plugins/dfinput/dfinput.glade2.h:3
+#: ../plugins/dfinput/dfinput.ui.h:4
msgid "Controller 2"
msgstr "Controle 2"
-#: ../plugins/dfinput/dfinput.glade2.h:4
+#: ../plugins/dfinput/dfinput.ui.h:5
msgid "Device:"
msgstr ""
-#: ../plugins/dfinput/dfinput.glade2.h:5
-msgid ""
-"Digital Pad\n"
-"Analog Pad"
+#: ../plugins/dfinput/dfinput.ui.h:6
+msgid "Digital Pad"
msgstr ""
-#: ../plugins/dfinput/dfinput.glade2.h:7
+#: ../plugins/dfinput/dfinput.ui.h:7
msgid "Multi-Threaded (Recommended)"
msgstr ""
-#: ../plugins/dfinput/dfinput.glade2.h:9
+#: ../plugins/dfinput/dfinput.ui.h:9
msgid "Reset"
msgstr ""
-#: ../plugins/dfinput/dfinput.glade2.h:10
+#: ../plugins/dfinput/dfinput.ui.h:10
msgid "Type:"
msgstr ""
-#: ../plugins/dfinput/pad.c:22
+#: ../plugins/dfinput/pad.c:24
msgid "Gamepad/Keyboard Input"
msgstr "Entrada do gamepad ou teclado"
@@ -1508,28 +1510,28 @@ msgstr "Erro carregando \"%s\": \"%s\""
msgid "Error allocating memory!\n"
msgstr "Erro ao alocar memória!"
-#: ../plugins/dfnet/dfnet.glade2.h:1
+#: ../plugins/dfnet/dfnet.ui.h:1
msgid "Client (Player2)"
msgstr ""
-#: ../plugins/dfnet/dfnet.glade2.h:2
+#: ../plugins/dfnet/dfnet.ui.h:2
msgid "Copy PC IP to Clipboard"
msgstr ""
-#: ../plugins/dfnet/dfnet.glade2.h:3
+#: ../plugins/dfnet/dfnet.ui.h:3
msgid ""
"Do not change if not necessary (remember it must be changed on both sides)."
msgstr ""
-#: ../plugins/dfnet/dfnet.glade2.h:4
+#: ../plugins/dfnet/dfnet.ui.h:4
msgid "Play Offline"
msgstr ""
-#: ../plugins/dfnet/dfnet.glade2.h:5
+#: ../plugins/dfnet/dfnet.ui.h:5
msgid "Port Number"
msgstr ""
-#: ../plugins/dfnet/dfnet.glade2.h:6
+#: ../plugins/dfnet/dfnet.ui.h:6
msgid ""
"Select here if you'll be Server (Player1) or Client (Player2).\n"
"\n"
@@ -1540,24 +1542,24 @@ msgid ""
"the IP Address Control."
msgstr ""
-#: ../plugins/dfnet/dfnet.glade2.h:11
+#: ../plugins/dfnet/dfnet.ui.h:11
msgid "Server (Player1)"
msgstr ""
-#: ../plugins/dfnet/dfnet.glade2.h:12
+#: ../plugins/dfnet/dfnet.ui.h:12
msgid "Start Game"
msgstr ""
-#: ../plugins/dfnet/gui.c:31 ../plugins/dfnet/gui.c:112
+#: ../plugins/dfnet/gui.c:30 ../plugins/dfnet/gui.c:112
#: ../win32/gui/ConfigurePlugins.c:616
msgid "NetPlay"
msgstr "Jogo em rede"
-#: ../plugins/dfnet/gui.c:39
+#: ../plugins/dfnet/gui.c:38
msgid "Nothing to configure"
msgstr ""
-#: ../plugins/dfnet/gui.c:95
+#: ../plugins/dfnet/gui.c:94
#, c-format
msgid "IP %s"
msgstr ""
@@ -2739,49 +2741,49 @@ msgstr "Erro ao abrir a extensão de SPU (%d)!"
msgid "Error Opening PAD1 Plugin (%d)"
msgstr "Erro ao abrir a extensão do controle 1 (%d)!"
-#: ../win32/gui/plugin.c:291
+#: ../win32/gui/plugin.c:293
#, c-format
msgid "Error Opening PAD2 Plugin (%d)"
msgstr "Erro ao abrir a extensão do controle 2 (%d)!"
-#: ../win32/gui/plugin.c:319
+#: ../win32/gui/plugin.c:323
msgid "Error Closing CDR Plugin"
msgstr "Erro ao fechar a extensão de CDROM!"
-#: ../win32/gui/plugin.c:321
+#: ../win32/gui/plugin.c:325
msgid "Error Closing GPU Plugin"
msgstr "Erro ao fechar a extensão de GPU!"
-#: ../win32/gui/plugin.c:323
+#: ../win32/gui/plugin.c:327
msgid "Error Closing SPU Plugin"
msgstr "Erro ao fechar a extensão de SPU!"
-#: ../win32/gui/plugin.c:341
+#: ../win32/gui/plugin.c:345
#, c-format
msgid "CDRinit error: %d"
msgstr "Erro ao iniciar o CDROM: %d"
-#: ../win32/gui/plugin.c:343
+#: ../win32/gui/plugin.c:347
#, c-format
msgid "GPUinit error: %d"
msgstr "Erro ao iniciar a GPU: %d"
-#: ../win32/gui/plugin.c:345
+#: ../win32/gui/plugin.c:349
#, c-format
msgid "SPUinit error: %d"
msgstr "Erro ao iniciar a SPU: %d"
-#: ../win32/gui/plugin.c:347
+#: ../win32/gui/plugin.c:351
#, c-format
msgid "PAD1init error: %d"
msgstr "Erro ao iniciar o controle 1: %d"
-#: ../win32/gui/plugin.c:349
+#: ../win32/gui/plugin.c:353
#, c-format
msgid "PAD2init error: %d"
msgstr "Erro ao iniciar o controle 2: %d"
-#: ../win32/gui/plugin.c:352
+#: ../win32/gui/plugin.c:356
#, c-format
msgid "NETinit error: %d"
msgstr "Erro ao iniciar a rede: %d"
diff --git a/po/ru_RU.po b/po/ru_RU.po
index 2a7cbd5a..d863a2ed 100644
--- a/po/ru_RU.po
+++ b/po/ru_RU.po
@@ -7,14 +7,14 @@ msgid ""
msgstr ""
"Project-Id-Version: pcsxr 1.0\n"
"Report-Msgid-Bugs-To: whistler_wmz@users.sf.net\n"
-"POT-Creation-Date: 2011-01-02 17:37+0800\n"
+"POT-Creation-Date: 2011-01-09 15:27+0800\n"
"PO-Revision-Date: 2010-08-28 16:44+0400\n"
"Last-Translator: Blade_Arma <edgbla@yandex.ru>\n"
"Language-Team: American English <kde-i18n-doc@kde.org>\n"
-"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"Language: \n"
"X-Generator: Lokalize 1.0\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -959,27 +959,27 @@ msgstr "Ошибка открытия GPU плагина!"
msgid "Error opening Controller 1 plugin!"
msgstr "Ошибка открытия PAD1 плагина!"
-#: ../gui/Plugin.c:333
+#: ../gui/Plugin.c:335
msgid "Error opening Controller 2 plugin!"
msgstr "Ошибка открытия PAD2 плагина!"
-#: ../gui/Plugin.c:413
+#: ../gui/Plugin.c:417
msgid "Error closing CD-ROM plugin!"
msgstr "Ошибка при закрытии CD-ROM плагина!"
-#: ../gui/Plugin.c:415
+#: ../gui/Plugin.c:419
msgid "Error closing SPU plugin!"
msgstr "Ошибка при закрытии SPU плагина!"
-#: ../gui/Plugin.c:417
+#: ../gui/Plugin.c:421
msgid "Error closing Controller 1 Plugin!"
msgstr "Ошибка при закрытии PAD1 плагина!"
-#: ../gui/Plugin.c:419
+#: ../gui/Plugin.c:423
msgid "Error closing Controller 2 plugin!"
msgstr "Ошибка при закрытии PAD2 плагина!"
-#: ../gui/Plugin.c:421
+#: ../gui/Plugin.c:425
msgid "Error closing GPU plugin!"
msgstr "Ошибка при закрытии GPU плагина!"
@@ -1047,82 +1047,82 @@ msgstr "Неизвестный опкод CPE %02x по адресу %08x.\n"
msgid "This file does not appear to be a valid PSX file.\n"
msgstr "This file does not appear to be a valid PSX file.\n"
-#: ../libpcsxcore/plugins.c:183
+#: ../libpcsxcore/plugins.c:189
#, c-format
msgid "Error loading %s: %s"
msgstr "Ошибка загрузки %s: %s"
-#: ../libpcsxcore/plugins.c:235
+#: ../libpcsxcore/plugins.c:243
#, c-format
msgid "Could not load GPU plugin %s!"
msgstr "Не удалось загрузить GPU плагин %s!"
-#: ../libpcsxcore/plugins.c:308
+#: ../libpcsxcore/plugins.c:318
#, c-format
msgid "Could not load CD-ROM plugin %s!"
msgstr "Не удалось загрузить CD-ROM плагин %s!"
-#: ../libpcsxcore/plugins.c:356
+#: ../libpcsxcore/plugins.c:366
#, c-format
msgid "Could not load SPU plugin %s!"
msgstr "Не удалось загрузить SPU плагин %s!"
-#: ../libpcsxcore/plugins.c:493
+#: ../libpcsxcore/plugins.c:505
#, c-format
msgid "Could not load Controller 1 plugin %s!"
msgstr "Не удалось загрузить PAD1 плагин %s!"
-#: ../libpcsxcore/plugins.c:547
+#: ../libpcsxcore/plugins.c:563
#, c-format
msgid "Could not load Controller 2 plugin %s!"
msgstr "Не удалось загрузить PAD2 плагин %s!"
-#: ../libpcsxcore/plugins.c:590
+#: ../libpcsxcore/plugins.c:608
#, c-format
msgid "Could not load NetPlay plugin %s!"
msgstr "Не удалось загрузить NetPlay плагин %s!"
-#: ../libpcsxcore/plugins.c:670
+#: ../libpcsxcore/plugins.c:688
#, c-format
msgid "Could not load SIO1 plugin %s!"
msgstr "Не удалось загрузить SIO1 плагин %s!"
-#: ../libpcsxcore/plugins.c:755
+#: ../libpcsxcore/plugins.c:773
#, c-format
msgid "Error initializing CD-ROM plugin: %d"
msgstr "Ошибка инициализации CD-ROM плагина: %d"
-#: ../libpcsxcore/plugins.c:757
+#: ../libpcsxcore/plugins.c:775
#, c-format
msgid "Error initializing GPU plugin: %d"
msgstr "Ошибка инициализации GPU плагина: %d"
-#: ../libpcsxcore/plugins.c:759
+#: ../libpcsxcore/plugins.c:777
#, c-format
msgid "Error initializing SPU plugin: %d"
msgstr "Ошибка инициализации SPU плагина: %d"
-#: ../libpcsxcore/plugins.c:761
+#: ../libpcsxcore/plugins.c:779
#, c-format
msgid "Error initializing Controller 1 plugin: %d"
msgstr "Ошибка инициализации PAD1 плагина: %d"
-#: ../libpcsxcore/plugins.c:763
+#: ../libpcsxcore/plugins.c:781
#, c-format
msgid "Error initializing Controller 2 plugin: %d"
msgstr "Ошибка инициализации PAD2 плагина: %d"
-#: ../libpcsxcore/plugins.c:767
+#: ../libpcsxcore/plugins.c:785
#, c-format
msgid "Error initializing NetPlay plugin: %d"
msgstr "Ошибка инициализации NetPlay плагина: %d"
-#: ../libpcsxcore/plugins.c:772
+#: ../libpcsxcore/plugins.c:790
#, c-format
msgid "Error initializing SIO1 plugin: %d"
msgstr "Ошибка инициализации SIO1 плагина: %d"
-#: ../libpcsxcore/plugins.c:775
+#: ../libpcsxcore/plugins.c:793
msgid "Plugins loaded.\n"
msgstr "Плагины загружены.\n"
@@ -1255,7 +1255,7 @@ msgstr ""
"В отдельном потоке - (Кеширование)"
#: ../plugins/dfcdrom/cdrcfg-0.1df/dfcdrom.glade2.h:24
-#: ../plugins/dfinput/dfinput.glade2.h:8 ../win32/gui/WndMain.c:1307
+#: ../plugins/dfinput/dfinput.ui.h:8 ../win32/gui/WndMain.c:1307
msgid "Options"
msgstr "Опции"
@@ -1371,119 +1371,125 @@ msgstr ""
msgid "R-Stick Up"
msgstr ""
-#: ../plugins/dfinput/cfg-gtk2.c:103 ../plugins/dfinput/cfg-gtk2.c:142
+#: ../plugins/dfinput/cfg-gtk2.c:100 ../plugins/dfinput/cfg-gtk2.c:139
msgid "Centered"
msgstr "Отцентровано"
-#: ../plugins/dfinput/cfg-gtk2.c:103 ../plugins/dfinput/cfg-gtk2.c:142
+#: ../plugins/dfinput/cfg-gtk2.c:100 ../plugins/dfinput/cfg-gtk2.c:139
msgid "Up"
msgstr ""
-#: ../plugins/dfinput/cfg-gtk2.c:103 ../plugins/dfinput/cfg-gtk2.c:142
+#: ../plugins/dfinput/cfg-gtk2.c:100 ../plugins/dfinput/cfg-gtk2.c:139
msgid "Right"
msgstr ""
-#: ../plugins/dfinput/cfg-gtk2.c:103 ../plugins/dfinput/cfg-gtk2.c:142
+#: ../plugins/dfinput/cfg-gtk2.c:100 ../plugins/dfinput/cfg-gtk2.c:139
msgid "Rightup"
msgstr ""
-#: ../plugins/dfinput/cfg-gtk2.c:104 ../plugins/dfinput/cfg-gtk2.c:143
+#: ../plugins/dfinput/cfg-gtk2.c:101 ../plugins/dfinput/cfg-gtk2.c:140
msgid "Down"
msgstr ""
-#: ../plugins/dfinput/cfg-gtk2.c:104 ../plugins/dfinput/cfg-gtk2.c:143
+#: ../plugins/dfinput/cfg-gtk2.c:101 ../plugins/dfinput/cfg-gtk2.c:140
msgid "Rightdown"
msgstr ""
-#: ../plugins/dfinput/cfg-gtk2.c:104 ../plugins/dfinput/cfg-gtk2.c:143
+#: ../plugins/dfinput/cfg-gtk2.c:101 ../plugins/dfinput/cfg-gtk2.c:140
msgid "Left"
msgstr ""
-#: ../plugins/dfinput/cfg-gtk2.c:104 ../plugins/dfinput/cfg-gtk2.c:143
+#: ../plugins/dfinput/cfg-gtk2.c:101 ../plugins/dfinput/cfg-gtk2.c:140
msgid "Leftup"
msgstr ""
-#: ../plugins/dfinput/cfg-gtk2.c:105 ../plugins/dfinput/cfg-gtk2.c:144
+#: ../plugins/dfinput/cfg-gtk2.c:102 ../plugins/dfinput/cfg-gtk2.c:141
msgid "Leftdown"
msgstr ""
-#: ../plugins/dfinput/cfg-gtk2.c:109 ../plugins/dfinput/cfg-gtk2.c:148
+#: ../plugins/dfinput/cfg-gtk2.c:106 ../plugins/dfinput/cfg-gtk2.c:145
#, c-format
msgid "Joystick: Button %d"
msgstr "Джойстик: Кнопка %d"
-#: ../plugins/dfinput/cfg-gtk2.c:113 ../plugins/dfinput/cfg-gtk2.c:152
+#: ../plugins/dfinput/cfg-gtk2.c:110 ../plugins/dfinput/cfg-gtk2.c:149
#, c-format
msgid "Joystick: Axis %d%c"
msgstr "Джойстик: Ось %d%c"
-#: ../plugins/dfinput/cfg-gtk2.c:118 ../plugins/dfinput/cfg-gtk2.c:157
+#: ../plugins/dfinput/cfg-gtk2.c:115 ../plugins/dfinput/cfg-gtk2.c:154
#, c-format
msgid "Joystick: Hat %d %s"
msgstr "Джойстик: Крестовина %d %s"
-#: ../plugins/dfinput/cfg-gtk2.c:133 ../plugins/dfinput/cfg-gtk2.c:172
+#: ../plugins/dfinput/cfg-gtk2.c:130 ../plugins/dfinput/cfg-gtk2.c:169
msgid "Keyboard:"
msgstr "Клавиатура:"
-#: ../plugins/dfinput/cfg-gtk2.c:137 ../plugins/dfinput/cfg-gtk2.c:176
+#: ../plugins/dfinput/cfg-gtk2.c:134 ../plugins/dfinput/cfg-gtk2.c:173
msgid "(Not Set)"
msgstr "(Не установлено)"
-#: ../plugins/dfinput/cfg-gtk2.c:559
+#: ../plugins/dfinput/cfg-gtk2.c:542
#: ../plugins/peopsxgl/gpucfg/peopsxgl.ui.h:55
msgid "None"
msgstr "Нету"
-#: ../plugins/dfinput/cfg-gtk2.c:601
+#: ../plugins/dfinput/cfg-gtk2.c:584
msgid "Gamepad/Keyboard Input Configuration"
msgstr "Настройка Gamepad/Keyboard"
-#: ../plugins/dfinput/cfg-gtk2.c:607 ../plugins/dfinput/cfg-gtk2.c:627
+#: ../plugins/dfinput/cfg-gtk2.c:590 ../plugins/dfinput/cfg-gtk2.c:610
msgid "Key"
msgstr "Клавиша"
-#: ../plugins/dfinput/cfg-gtk2.c:613 ../plugins/dfinput/cfg-gtk2.c:633
+#: ../plugins/dfinput/cfg-gtk2.c:596 ../plugins/dfinput/cfg-gtk2.c:616
msgid "Button"
msgstr "Кнопка"
-#: ../plugins/dfinput/dfinput.glade2.h:1
+#: ../plugins/dfinput/dfinput.ui.h:1
+#, fuzzy
+msgid "Analog Pad"
+msgstr ""
+"Стандартный контроллер\n"
+"Аналоговый контроллер"
+
+#: ../plugins/dfinput/dfinput.ui.h:2
msgid "Change"
msgstr "Изменить"
-#: ../plugins/dfinput/dfinput.glade2.h:2
+#: ../plugins/dfinput/dfinput.ui.h:3
msgid "Controller 1"
msgstr "Контроллер 1"
-#: ../plugins/dfinput/dfinput.glade2.h:3
+#: ../plugins/dfinput/dfinput.ui.h:4
msgid "Controller 2"
msgstr "Контроллер 2"
-#: ../plugins/dfinput/dfinput.glade2.h:4
+#: ../plugins/dfinput/dfinput.ui.h:5
msgid "Device:"
msgstr "Устройство:"
-#: ../plugins/dfinput/dfinput.glade2.h:5
-msgid ""
-"Digital Pad\n"
-"Analog Pad"
+#: ../plugins/dfinput/dfinput.ui.h:6
+#, fuzzy
+msgid "Digital Pad"
msgstr ""
"Стандартный контроллер\n"
"Аналоговый контроллер"
-#: ../plugins/dfinput/dfinput.glade2.h:7
+#: ../plugins/dfinput/dfinput.ui.h:7
msgid "Multi-Threaded (Recommended)"
msgstr "В отдельном потоке (Рекомендуется)"
-#: ../plugins/dfinput/dfinput.glade2.h:9
+#: ../plugins/dfinput/dfinput.ui.h:9
msgid "Reset"
msgstr "Сброс"
-#: ../plugins/dfinput/dfinput.glade2.h:10
+#: ../plugins/dfinput/dfinput.ui.h:10
msgid "Type:"
msgstr "Тип:"
-#: ../plugins/dfinput/pad.c:22
+#: ../plugins/dfinput/pad.c:24
msgid "Gamepad/Keyboard Input"
msgstr ""
@@ -1501,30 +1507,30 @@ msgstr "Ошибка соединения с %s: %s\n"
msgid "Error allocating memory!\n"
msgstr "Ошибка выделения памяти!\n"
-#: ../plugins/dfnet/dfnet.glade2.h:1
+#: ../plugins/dfnet/dfnet.ui.h:1
msgid "Client (Player2)"
msgstr "Клиент (Игрок 2)"
-#: ../plugins/dfnet/dfnet.glade2.h:2
+#: ../plugins/dfnet/dfnet.ui.h:2
msgid "Copy PC IP to Clipboard"
msgstr "Скопировать IP адрес в буфер обмена"
-#: ../plugins/dfnet/dfnet.glade2.h:3
+#: ../plugins/dfnet/dfnet.ui.h:3
msgid ""
"Do not change if not necessary (remember it must be changed on both sides)."
msgstr ""
"Не меняйте без особой необходимости (помните что порты должны быть одинаковы "
"для обеих сторон)"
-#: ../plugins/dfnet/dfnet.glade2.h:4
+#: ../plugins/dfnet/dfnet.ui.h:4
msgid "Play Offline"
msgstr "Начать без использования сети"
-#: ../plugins/dfnet/dfnet.glade2.h:5
+#: ../plugins/dfnet/dfnet.ui.h:5
msgid "Port Number"
msgstr "Номер порта"
-#: ../plugins/dfnet/dfnet.glade2.h:6
+#: ../plugins/dfnet/dfnet.ui.h:6
msgid ""
"Select here if you'll be Server (Player1) or Client (Player2).\n"
"\n"
@@ -1542,24 +1548,24 @@ msgstr ""
"Если вы выбрали Клиента - введите полученный IP адрес Сервера в "
"соответствующее поле."
-#: ../plugins/dfnet/dfnet.glade2.h:11
+#: ../plugins/dfnet/dfnet.ui.h:11
msgid "Server (Player1)"
msgstr "Сервер (Игрок 1)"
-#: ../plugins/dfnet/dfnet.glade2.h:12
+#: ../plugins/dfnet/dfnet.ui.h:12
msgid "Start Game"
msgstr "Начать сетевую игру"
-#: ../plugins/dfnet/gui.c:31 ../plugins/dfnet/gui.c:112
+#: ../plugins/dfnet/gui.c:30 ../plugins/dfnet/gui.c:112
#: ../win32/gui/ConfigurePlugins.c:616
msgid "NetPlay"
msgstr "Сетевая игра"
-#: ../plugins/dfnet/gui.c:39
+#: ../plugins/dfnet/gui.c:38
msgid "Nothing to configure"
msgstr "Не подлежит настройке"
-#: ../plugins/dfnet/gui.c:95
+#: ../plugins/dfnet/gui.c:94
#, c-format
msgid "IP %s"
msgstr ""
@@ -2679,49 +2685,49 @@ msgstr "Ошибка открытия SPU плагина (%d)"
msgid "Error Opening PAD1 Plugin (%d)"
msgstr "Ошибка открытия PAD1 плагина (%d)"
-#: ../win32/gui/plugin.c:291
+#: ../win32/gui/plugin.c:293
#, c-format
msgid "Error Opening PAD2 Plugin (%d)"
msgstr "Ошибка открытия PAD2 плагина (%d)"
-#: ../win32/gui/plugin.c:319
+#: ../win32/gui/plugin.c:323
msgid "Error Closing CDR Plugin"
msgstr "Ошибка при закрытии CD-ROM плагина (%d)"
-#: ../win32/gui/plugin.c:321
+#: ../win32/gui/plugin.c:325
msgid "Error Closing GPU Plugin"
msgstr "Ошибка при закрытии GPU плагина"
-#: ../win32/gui/plugin.c:323
+#: ../win32/gui/plugin.c:327
msgid "Error Closing SPU Plugin"
msgstr "Ошибка при закрытии SPU плагина"
-#: ../win32/gui/plugin.c:341
+#: ../win32/gui/plugin.c:345
#, c-format
msgid "CDRinit error: %d"
msgstr "Ошибка в CDRinit: %d"
-#: ../win32/gui/plugin.c:343
+#: ../win32/gui/plugin.c:347
#, c-format
msgid "GPUinit error: %d"
msgstr "Ошибка в GPUinit: %d"
-#: ../win32/gui/plugin.c:345
+#: ../win32/gui/plugin.c:349
#, c-format
msgid "SPUinit error: %d"
msgstr "Ошибка в SPUinit: %d"
-#: ../win32/gui/plugin.c:347
+#: ../win32/gui/plugin.c:351
#, c-format
msgid "PAD1init error: %d"
msgstr "Ошибка в PAD1init: %d"
-#: ../win32/gui/plugin.c:349
+#: ../win32/gui/plugin.c:353
#, c-format
msgid "PAD2init error: %d"
msgstr "Ошибка в PAD2init: %d"
-#: ../win32/gui/plugin.c:352
+#: ../win32/gui/plugin.c:356
#, c-format
msgid "NETinit error: %d"
msgstr "Ошибка в NETinit: %d"
diff --git a/po/zh_CN.po b/po/zh_CN.po
index 6f57fc45..434c33fb 100644
--- a/po/zh_CN.po
+++ b/po/zh_CN.po
@@ -7,14 +7,14 @@ msgid ""
msgstr ""
"Project-Id-Version: pcsxr 1.0\n"
"Report-Msgid-Bugs-To: whistler_wmz@users.sf.net\n"
-"POT-Creation-Date: 2011-01-02 17:37+0800\n"
-"PO-Revision-Date: 2011-01-02 13:16+0700\n"
+"POT-Creation-Date: 2011-01-09 15:27+0800\n"
+"PO-Revision-Date: 2011-01-09 15:28+0700\n"
"Last-Translator: Wei Mingzhi <whistler@openoffice.org>\n"
"Language-Team: Simplified Chinese <whistler@openoffice.org>\n"
-"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"Language: \n"
#: ../data/pcsx.glade2.h:1
msgid ""
@@ -62,11 +62,13 @@ msgstr "<b>插件</b>"
msgid "<b>System Type</b>"
msgstr "<b>系统类型</b>"
-#: ../data/pcsx.glade2.h:13 ../gui/DebugMemory.c:188
+#: ../data/pcsx.glade2.h:13
+#: ../gui/DebugMemory.c:188
msgid "Address (Hexadecimal):"
msgstr "地址 (十六进制):"
-#: ../data/pcsx.glade2.h:14 ../win32/gui/WndMain.c:1299
+#: ../data/pcsx.glade2.h:14
+#: ../win32/gui/WndMain.c:1299
msgid "Autodetect"
msgstr "自动检测"
@@ -94,7 +96,9 @@ msgstr "控制器(_O)..."
msgid "Chea_t"
msgstr "作弊码(_T)"
-#: ../data/pcsx.glade2.h:21 ../gui/Cheat.c:1129 ../win32/gui/CheatDlg.c:678
+#: ../data/pcsx.glade2.h:21
+#: ../gui/Cheat.c:1129
+#: ../win32/gui/CheatDlg.c:678
msgid "Cheat Search"
msgstr "查找作弊码"
@@ -122,11 +126,13 @@ msgstr "配置记忆卡"
msgid "Configure NetPlay"
msgstr "配置联网游戏"
-#: ../data/pcsx.glade2.h:28 ../gui/ConfDlg.c:112
+#: ../data/pcsx.glade2.h:28
+#: ../gui/ConfDlg.c:112
msgid "Configure PCSX"
msgstr "配置 PCSX"
-#: ../data/pcsx.glade2.h:29 ../plugins/dfsound/spucfg-0.1df/dfsound.glade2.h:6
+#: ../data/pcsx.glade2.h:29
+#: ../plugins/dfsound/spucfg-0.1df/dfsound.glade2.h:6
msgid "Configure Sound"
msgstr "配置音频"
@@ -154,11 +160,13 @@ msgstr "控制器..."
msgid "Copy"
msgstr "复制"
-#: ../data/pcsx.glade2.h:36 ../win32/gui/CheatDlg.c:683
+#: ../data/pcsx.glade2.h:36
+#: ../win32/gui/CheatDlg.c:683
msgid "Data Base:"
msgstr "数据基:"
-#: ../data/pcsx.glade2.h:37 ../win32/gui/CheatDlg.c:681
+#: ../data/pcsx.glade2.h:37
+#: ../win32/gui/CheatDlg.c:681
msgid "Data Type:"
msgstr "数据类型:"
@@ -182,15 +190,18 @@ msgstr "禁用 XA 解码"
msgid "E_xit"
msgstr "退出(_X)"
-#: ../data/pcsx.glade2.h:43 ../win32/gui/CheatDlg.c:166
+#: ../data/pcsx.glade2.h:43
+#: ../win32/gui/CheatDlg.c:166
msgid "Edit Cheat Codes"
msgstr "编辑作弊码"
-#: ../data/pcsx.glade2.h:44 ../win32/gui/WndMain.c:1301
+#: ../data/pcsx.glade2.h:44
+#: ../win32/gui/WndMain.c:1301
msgid "Enable Console Output"
msgstr "启用控制台输出"
-#: ../data/pcsx.glade2.h:45 ../win32/gui/WndMain.c:1302
+#: ../data/pcsx.glade2.h:45
+#: ../win32/gui/WndMain.c:1302
msgid "Enable Debugger"
msgstr "启用调试器"
@@ -224,7 +235,8 @@ msgstr ""
msgid "Format"
msgstr "格式化"
-#: ../data/pcsx.glade2.h:57 ../win32/gui/CheatDlg.c:504
+#: ../data/pcsx.glade2.h:57
+#: ../win32/gui/CheatDlg.c:504
msgid "Freeze"
msgstr "固定"
@@ -236,7 +248,8 @@ msgstr "图像..."
msgid "Graphics:"
msgstr "图像:"
-#: ../data/pcsx.glade2.h:60 ../win32/gui/WndMain.c:1305
+#: ../data/pcsx.glade2.h:60
+#: ../win32/gui/WndMain.c:1305
msgid "InuYasha Sengoku Battle Fix"
msgstr "InuYasha Sengoku Battle 修正"
@@ -244,7 +257,8 @@ msgstr "InuYasha Sengoku Battle 修正"
msgid "Memcards..."
msgstr "记忆卡..."
-#: ../data/pcsx.glade2.h:62 ../gui/DebugMemory.c:103
+#: ../data/pcsx.glade2.h:62
+#: ../gui/DebugMemory.c:103
msgid "Memory Dump"
msgstr "内存转储"
@@ -252,7 +266,8 @@ msgstr "内存转储"
msgid "Memory _Dump"
msgstr "内存转储(_D)"
-#: ../data/pcsx.glade2.h:64 ../win32/gui/CheatDlg.c:595
+#: ../data/pcsx.glade2.h:64
+#: ../win32/gui/CheatDlg.c:595
msgid "Modify"
msgstr "修改"
@@ -272,7 +287,8 @@ msgstr "新建"
msgid "PCSX"
msgstr "PCSX"
-#: ../data/pcsx.glade2.h:69 ../win32/gui/WndMain.c:1304
+#: ../data/pcsx.glade2.h:69
+#: ../win32/gui/WndMain.c:1304
msgid "Parasite Eve 2, Vandal Hearts 1/2 Fix"
msgstr "Parasite Eve 2, Vandal Hearts 1/2 修正"
@@ -316,7 +332,8 @@ msgstr "运行 _EXE..."
msgid "Run _ISO..."
msgstr "运行 _ISO..."
-#: ../data/pcsx.glade2.h:80 ../gui/Plugin.c:239
+#: ../data/pcsx.glade2.h:80
+#: ../gui/Plugin.c:239
#, c-format
msgid "SIO IRQ Always Enabled"
msgstr "SIO IRQ 总是启用"
@@ -333,7 +350,8 @@ msgstr "更换 ISO(_W)..."
msgid "Search"
msgstr "查找"
-#: ../data/pcsx.glade2.h:84 ../win32/gui/CheatDlg.c:680
+#: ../data/pcsx.glade2.h:84
+#: ../win32/gui/CheatDlg.c:680
msgid "Search For:"
msgstr "查找:"
@@ -397,7 +415,8 @@ msgstr "更换 ISO 光盘镜像"
msgid "Switch ISO..."
msgstr "更换 ISO..."
-#: ../data/pcsx.glade2.h:100 ../win32/gui/CheatDlg.c:684
+#: ../data/pcsx.glade2.h:100
+#: ../win32/gui/CheatDlg.c:684
msgid "To:"
msgstr "到:"
@@ -405,8 +424,11 @@ msgstr "到:"
msgid "Un/Delete"
msgstr "删除/恢复"
-#: ../data/pcsx.glade2.h:102 ../gui/Cheat.c:647 ../win32/gui/CheatDlg.c:506
-#: ../win32/gui/CheatDlg.c:597 ../win32/gui/CheatDlg.c:682
+#: ../data/pcsx.glade2.h:102
+#: ../gui/Cheat.c:647
+#: ../win32/gui/CheatDlg.c:506
+#: ../win32/gui/CheatDlg.c:597
+#: ../win32/gui/CheatDlg.c:682
msgid "Value:"
msgstr "值:"
@@ -498,33 +520,17 @@ msgstr ""
#: ../gui/AboutDlg.c:77
msgid ""
-"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.\n"
+"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.\n"
"\n"
-"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.\n"
+"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.\n"
"\n"
-"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 02111-1307 USA."
+"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 02111-1307 USA."
msgstr ""
-"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.\n"
+"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.\n"
"\n"
-"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.\n"
+"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.\n"
"\n"
-"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 02111-1307 USA."
+"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 02111-1307 USA."
#: ../gui/AboutDlg.c:100
msgid "translator-credits"
@@ -534,30 +540,39 @@ msgstr "Wei Mingzhi <whistler@openoffice.org>"
msgid "A PlayStation emulator."
msgstr "一个 PlayStation 模拟器。"
-#: ../gui/Cheat.c:109 ../win32/gui/CheatDlg.c:116
+#: ../gui/Cheat.c:109
+#: ../win32/gui/CheatDlg.c:116
msgid "Add New Cheat"
msgstr "添加新作弊码"
-#: ../gui/Cheat.c:117 ../gui/Cheat.c:202
+#: ../gui/Cheat.c:117
+#: ../gui/Cheat.c:202
msgid "Cheat Description:"
msgstr "作弊码描述:"
-#: ../gui/Cheat.c:125 ../gui/Cheat.c:211 ../win32/gui/CheatDlg.c:68
+#: ../gui/Cheat.c:125
+#: ../gui/Cheat.c:211
+#: ../win32/gui/CheatDlg.c:68
#: ../win32/gui/CheatDlg.c:118
msgid "Cheat Code:"
msgstr "作弊码:"
-#: ../gui/Cheat.c:155 ../gui/Cheat.c:251 ../gui/LnxMain.c:419
+#: ../gui/Cheat.c:155
+#: ../gui/Cheat.c:251
+#: ../gui/LnxMain.c:419
#: ../win32/gui/ConfigurePlugins.c:305
msgid "Error"
msgstr "错误"
-#: ../gui/Cheat.c:155 ../gui/Cheat.c:251 ../win32/gui/CheatDlg.c:91
+#: ../gui/Cheat.c:155
+#: ../gui/Cheat.c:251
+#: ../win32/gui/CheatDlg.c:91
#: ../win32/gui/CheatDlg.c:132
msgid "Invalid cheat code!"
msgstr "非法作弊码!"
-#: ../gui/Cheat.c:194 ../win32/gui/CheatDlg.c:66
+#: ../gui/Cheat.c:194
+#: ../win32/gui/CheatDlg.c:66
msgid "Edit Cheat"
msgstr "编辑作弊码"
@@ -565,12 +580,16 @@ msgstr "编辑作弊码"
msgid "Open Cheat File"
msgstr "打开作弊码文件"
-#: ../gui/Cheat.c:316 ../gui/Cheat.c:356
+#: ../gui/Cheat.c:316
+#: ../gui/Cheat.c:356
msgid "PCSX Cheat Code Files (*.cht)"
msgstr "PCSX 作弊码文件 (*.cht)"
-#: ../gui/Cheat.c:321 ../gui/Gtk2Gui.c:446 ../gui/Gtk2Gui.c:587
-#: ../win32/gui/WndMain.c:1442 ../win32/gui/WndMain.c:1523
+#: ../gui/Cheat.c:321
+#: ../gui/Gtk2Gui.c:446
+#: ../gui/Gtk2Gui.c:587
+#: ../win32/gui/WndMain.c:1442
+#: ../win32/gui/WndMain.c:1523
msgid "All Files"
msgstr "所有文件"
@@ -582,8 +601,11 @@ msgstr "保存作弊码文件"
msgid "All Files (*.*)"
msgstr "所有文件 (*.*)"
-#: ../gui/Cheat.c:394 ../gui/Cheat.c:1124 ../gui/ConfDlg.c:104
-#: ../gui/ConfDlg.c:200 ../gui/DebugMemory.c:259
+#: ../gui/Cheat.c:394
+#: ../gui/Cheat.c:1124
+#: ../gui/ConfDlg.c:104
+#: ../gui/ConfDlg.c:200
+#: ../gui/DebugMemory.c:259
msgid "Error: Glade interface could not be loaded!"
msgstr "错误:无法加载 Glade 界面!"
@@ -595,35 +617,42 @@ msgstr "作弊码"
msgid "Enable"
msgstr "启用"
-#: ../gui/Cheat.c:413 ../win32/gui/CheatDlg.c:185
+#: ../gui/Cheat.c:413
+#: ../win32/gui/CheatDlg.c:185
msgid "Description"
msgstr "描述"
-#: ../gui/Cheat.c:543 ../win32/gui/CheatDlg.c:457
+#: ../gui/Cheat.c:543
+#: ../win32/gui/CheatDlg.c:457
msgid "Too many addresses found."
msgstr "找到过多的地址。"
-#: ../gui/Cheat.c:552 ../win32/gui/CheatDlg.c:466
+#: ../gui/Cheat.c:552
+#: ../win32/gui/CheatDlg.c:466
#, c-format
msgid "%.8X Current: %u (%.2X), Previous: %u (%.2X)"
msgstr "%.8X 当前值: %u (%.2X), 前次值: %u (%.2X)"
-#: ../gui/Cheat.c:557 ../win32/gui/CheatDlg.c:471
+#: ../gui/Cheat.c:557
+#: ../win32/gui/CheatDlg.c:471
#, c-format
msgid "%.8X Current: %u (%.4X), Previous: %u (%.4X)"
msgstr "%.8X 当前值: %u (%.4X), 前次值: %u (%.4X)"
-#: ../gui/Cheat.c:562 ../win32/gui/CheatDlg.c:476
+#: ../gui/Cheat.c:562
+#: ../win32/gui/CheatDlg.c:476
#, c-format
msgid "%.8X Current: %u (%.8X), Previous: %u (%.8X)"
msgstr "%.8X 当前值: %u (%.8X), 前次值: %u (%.8X)"
-#: ../gui/Cheat.c:577 ../win32/gui/CheatDlg.c:492
+#: ../gui/Cheat.c:577
+#: ../win32/gui/CheatDlg.c:492
#, c-format
msgid "Founded Addresses: %d"
msgstr "找到地址个数: %d"
-#: ../gui/Cheat.c:585 ../win32/gui/CheatDlg.c:448
+#: ../gui/Cheat.c:585
+#: ../win32/gui/CheatDlg.c:448
msgid "Enter the values and start your search."
msgstr "输入数值并开始查找。"
@@ -631,7 +660,9 @@ msgstr "输入数值并开始查找。"
msgid "Freeze value"
msgstr "固定数值"
-#: ../gui/Cheat.c:636 ../win32/gui/CheatDlg.c:67 ../win32/gui/CheatDlg.c:117
+#: ../gui/Cheat.c:636
+#: ../win32/gui/CheatDlg.c:67
+#: ../win32/gui/CheatDlg.c:117
msgid "Description:"
msgstr "描述:"
@@ -652,13 +683,19 @@ msgstr "查找结果"
#. disabled widgets
#. TODO If combo screen hasn't been opened and the user chooses the menu config option, confs.Combo will be null and cause a segfault
#. printf("Configuring plugin %s\n", filename);
-#: ../gui/ConfDlg.c:237 ../gui/ConfDlg.c:258 ../gui/ConfDlg.c:279
-#: ../gui/ConfDlg.c:300 ../gui/ConfDlg.c:355
+#: ../gui/ConfDlg.c:237
+#: ../gui/ConfDlg.c:258
+#: ../gui/ConfDlg.c:279
+#: ../gui/ConfDlg.c:300
+#: ../gui/ConfDlg.c:355
msgid "No configuration required"
msgstr "不需要配置"
-#: ../gui/ConfDlg.c:237 ../gui/ConfDlg.c:258 ../gui/ConfDlg.c:279
-#: ../gui/ConfDlg.c:300 ../gui/ConfDlg.c:355
+#: ../gui/ConfDlg.c:237
+#: ../gui/ConfDlg.c:258
+#: ../gui/ConfDlg.c:279
+#: ../gui/ConfDlg.c:300
+#: ../gui/ConfDlg.c:355
msgid "This plugin doesn't need to be configured."
msgstr "此插件需要被配置。"
@@ -667,7 +704,9 @@ msgstr "此插件需要被配置。"
msgid "Could not open BIOS directory: '%s'\n"
msgstr "无法打开 BIOS 目录: \"%s\"\n"
-#: ../gui/ConfDlg.c:611 ../gui/ConfDlg.c:704 ../gui/LnxMain.c:168
+#: ../gui/ConfDlg.c:611
+#: ../gui/ConfDlg.c:704
+#: ../gui/LnxMain.c:168
#, c-format
msgid "Could not open directory: '%s'\n"
msgstr "无法打开目录: \"%s\"\n"
@@ -738,23 +777,31 @@ msgstr "不是一个合法的 PSX 文件"
msgid "The file does not appear to be a valid Playstation executable"
msgstr "此文件不是一个合法的 PlayStation 可执行文件"
-#: ../gui/Gtk2Gui.c:508 ../gui/Gtk2Gui.c:649
+#: ../gui/Gtk2Gui.c:508
+#: ../gui/Gtk2Gui.c:649
msgid "CD ROM failed"
msgstr "CD-ROM 失败"
-#: ../gui/Gtk2Gui.c:508 ../gui/Gtk2Gui.c:649 ../win32/gui/WndMain.c:461
-#: ../win32/gui/WndMain.c:513 ../win32/gui/WndMain.c:582
+#: ../gui/Gtk2Gui.c:508
+#: ../gui/Gtk2Gui.c:649
+#: ../win32/gui/WndMain.c:461
+#: ../win32/gui/WndMain.c:513
+#: ../win32/gui/WndMain.c:582
#, c-format
msgid "The CD does not appear to be a valid Playstation CD"
msgstr "此光盘不是一张合法的 PlayStation 光盘。"
-#: ../gui/Gtk2Gui.c:519 ../gui/Gtk2Gui.c:660 ../win32/gui/WndMain.c:471
-#: ../win32/gui/WndMain.c:523 ../win32/gui/WndMain.c:592
+#: ../gui/Gtk2Gui.c:519
+#: ../gui/Gtk2Gui.c:660
+#: ../win32/gui/WndMain.c:471
+#: ../win32/gui/WndMain.c:523
+#: ../win32/gui/WndMain.c:592
#, c-format
msgid "Could not load CD-ROM!"
msgstr "无法加载光盘!"
-#: ../gui/Gtk2Gui.c:519 ../gui/Gtk2Gui.c:660
+#: ../gui/Gtk2Gui.c:519
+#: ../gui/Gtk2Gui.c:660
msgid "The CD-ROM could not be loaded"
msgstr "无法加载 CD-ROM"
@@ -794,7 +841,8 @@ msgstr "已保存存档 %s"
msgid "Error saving state %s!"
msgstr "保存存档 %s 时出错。"
-#: ../gui/Gtk2Gui.c:864 ../gui/Gtk2Gui.c:892
+#: ../gui/Gtk2Gui.c:864
+#: ../gui/Gtk2Gui.c:892
msgid "Select State File"
msgstr "选择存档文件"
@@ -833,9 +881,7 @@ msgstr ""
#: ../gui/LnxMain.c:363
#, c-format
-msgid ""
-"PCSX cannot be configured without using the GUI -- you should restart "
-"without -nogui.\n"
+msgid "PCSX cannot be configured without using the GUI -- you should restart without -nogui.\n"
msgstr "PCSX 不能在字符界面下配置 -- 请不使用 -nogui 参数重新启动程序\n"
#: ../gui/LnxMain.c:419
@@ -856,11 +902,13 @@ msgstr "无法初始化 PS 模拟器。\n"
msgid "Icon"
msgstr "图标"
-#: ../gui/MemcardDlg.c:62 ../win32/gui/WndMain.c:746
+#: ../gui/MemcardDlg.c:62
+#: ../win32/gui/WndMain.c:746
msgid "Title"
msgstr "标题"
-#: ../gui/MemcardDlg.c:68 ../win32/gui/WndMain.c:752
+#: ../gui/MemcardDlg.c:68
+#: ../win32/gui/WndMain.c:752
msgid "Status"
msgstr "状态"
@@ -872,17 +920,24 @@ msgstr "ID"
msgid "Name"
msgstr "名称"
-#: ../gui/MemcardDlg.c:155 ../gui/MemcardDlg.c:260 ../win32/gui/WndMain.c:957
+#: ../gui/MemcardDlg.c:155
+#: ../gui/MemcardDlg.c:260
+#: ../win32/gui/WndMain.c:957
msgid "Deleted"
msgstr "已删除"
-#: ../gui/MemcardDlg.c:157 ../gui/MemcardDlg.c:161 ../gui/MemcardDlg.c:262
-#: ../gui/MemcardDlg.c:266 ../win32/gui/WndMain.c:958
+#: ../gui/MemcardDlg.c:157
+#: ../gui/MemcardDlg.c:161
+#: ../gui/MemcardDlg.c:262
+#: ../gui/MemcardDlg.c:266
+#: ../win32/gui/WndMain.c:958
#: ../win32/gui/WndMain.c:961
msgid "Free"
msgstr "空闲"
-#: ../gui/MemcardDlg.c:159 ../gui/MemcardDlg.c:264 ../win32/gui/WndMain.c:960
+#: ../gui/MemcardDlg.c:159
+#: ../gui/MemcardDlg.c:264
+#: ../win32/gui/WndMain.c:960
msgid "Used"
msgstr "已使用"
@@ -896,9 +951,7 @@ msgid "Format this Memory Card?"
msgstr "格式化此记忆卡?"
#: ../gui/MemcardDlg.c:366
-msgid ""
-"If you format the memory card, the card will be empty, and any existing data "
-"overwritten."
+msgid "If you format the memory card, the card will be empty, and any existing data overwritten."
msgstr "如果您选择格式化记忆卡,记忆卡将被清空,并且任何现有数据都将被覆盖。"
#: ../gui/MemcardDlg.c:369
@@ -920,9 +973,7 @@ msgid "No free space on memory card"
msgstr "记忆卡无空余位置"
#: ../gui/MemcardDlg.c:504
-msgid ""
-"There are no free slots available on the target memory card. Please delete a "
-"slot first."
+msgid "There are no free slots available on the target memory card. Please delete a slot first."
msgstr "目标记忆卡上无空余位置。请先删除一个存档。"
#: ../gui/MemcardDlg.c:667
@@ -970,27 +1021,27 @@ msgstr "无法打开 GPU 插件!"
msgid "Error opening Controller 1 plugin!"
msgstr "无法打开 \"控制器 1\" 插件!"
-#: ../gui/Plugin.c:333
+#: ../gui/Plugin.c:335
msgid "Error opening Controller 2 plugin!"
msgstr "无法打开 \"控制器 2\" 插件!"
-#: ../gui/Plugin.c:413
+#: ../gui/Plugin.c:417
msgid "Error closing CD-ROM plugin!"
msgstr "无法关闭 CD-ROM 插件!"
-#: ../gui/Plugin.c:415
+#: ../gui/Plugin.c:419
msgid "Error closing SPU plugin!"
msgstr "无法关闭 SPU 插件!"
-#: ../gui/Plugin.c:417
+#: ../gui/Plugin.c:421
msgid "Error closing Controller 1 Plugin!"
msgstr "无法关闭 \"控制器 1\" 插件!"
-#: ../gui/Plugin.c:419
+#: ../gui/Plugin.c:423
msgid "Error closing Controller 2 plugin!"
msgstr "无法关闭 \"控制器 2\" 插件!"
-#: ../gui/Plugin.c:421
+#: ../gui/Plugin.c:425
msgid "Error closing GPU plugin!"
msgstr "无法关闭 GPU 插件!"
@@ -1014,7 +1065,8 @@ msgstr "作弊码已加载: %s\n"
msgid "Cheats saved to: %s\n"
msgstr "作弊码己保存: %s\n"
-#: ../libpcsxcore/cheat.c:322 ../libpcsxcore/cheat.c:443
+#: ../libpcsxcore/cheat.c:322
+#: ../libpcsxcore/cheat.c:443
msgid "(Untitled)"
msgstr "(未命名)"
@@ -1058,82 +1110,82 @@ msgstr "未知 CPE 指令码 %02x 位于 %08x。\n"
msgid "This file does not appear to be a valid PSX file.\n"
msgstr "此文件不是一个合法的 PSX 文件。\n"
-#: ../libpcsxcore/plugins.c:183
+#: ../libpcsxcore/plugins.c:189
#, c-format
msgid "Error loading %s: %s"
msgstr "无法加载 %s: %s"
-#: ../libpcsxcore/plugins.c:235
+#: ../libpcsxcore/plugins.c:243
#, c-format
msgid "Could not load GPU plugin %s!"
msgstr "无法加载 GPU 插件 %s!"
-#: ../libpcsxcore/plugins.c:308
+#: ../libpcsxcore/plugins.c:318
#, c-format
msgid "Could not load CD-ROM plugin %s!"
msgstr "无法加载 CD-ROM 插件 %s!"
-#: ../libpcsxcore/plugins.c:356
+#: ../libpcsxcore/plugins.c:366
#, c-format
msgid "Could not load SPU plugin %s!"
msgstr "无法加载 SPU 插件 %s!"
-#: ../libpcsxcore/plugins.c:493
+#: ../libpcsxcore/plugins.c:505
#, c-format
msgid "Could not load Controller 1 plugin %s!"
msgstr "无法加载 \"控制器1\" 插件 %s!"
-#: ../libpcsxcore/plugins.c:547
+#: ../libpcsxcore/plugins.c:563
#, c-format
msgid "Could not load Controller 2 plugin %s!"
msgstr "无法加载 \"控制器2\" 插件 %s!"
-#: ../libpcsxcore/plugins.c:590
+#: ../libpcsxcore/plugins.c:608
#, c-format
msgid "Could not load NetPlay plugin %s!"
msgstr "无法加载联网游戏插件 %s!"
-#: ../libpcsxcore/plugins.c:670
+#: ../libpcsxcore/plugins.c:688
#, c-format
msgid "Could not load SIO1 plugin %s!"
msgstr "无法加载 SIO1 插件 %s!"
-#: ../libpcsxcore/plugins.c:755
+#: ../libpcsxcore/plugins.c:773
#, c-format
msgid "Error initializing CD-ROM plugin: %d"
msgstr "CD-ROM 插件初始化错误: %d"
-#: ../libpcsxcore/plugins.c:757
+#: ../libpcsxcore/plugins.c:775
#, c-format
msgid "Error initializing GPU plugin: %d"
msgstr "GPU 插件初始化错误: %d"
-#: ../libpcsxcore/plugins.c:759
+#: ../libpcsxcore/plugins.c:777
#, c-format
msgid "Error initializing SPU plugin: %d"
msgstr "SPU 插件初始化错误: %d"
-#: ../libpcsxcore/plugins.c:761
+#: ../libpcsxcore/plugins.c:779
#, c-format
msgid "Error initializing Controller 1 plugin: %d"
msgstr "\"控制器1\" 插件初始化错误: %d"
-#: ../libpcsxcore/plugins.c:763
+#: ../libpcsxcore/plugins.c:781
#, c-format
msgid "Error initializing Controller 2 plugin: %d"
msgstr "\"控制器2\" 插件初始化错误: %d"
-#: ../libpcsxcore/plugins.c:767
+#: ../libpcsxcore/plugins.c:785
#, c-format
msgid "Error initializing NetPlay plugin: %d"
msgstr "联网游戏插件初始化错误: %d"
-#: ../libpcsxcore/plugins.c:772
+#: ../libpcsxcore/plugins.c:790
#, c-format
msgid "Error initializing SIO1 plugin: %d"
msgstr "SIO1 插件初始化错误: %d"
-#: ../libpcsxcore/plugins.c:775
+#: ../libpcsxcore/plugins.c:793
msgid "Plugins loaded.\n"
msgstr "插件已加载。\n"
@@ -1265,7 +1317,8 @@ msgstr ""
"多线程 - 较快 (使用缓存)"
#: ../plugins/dfcdrom/cdrcfg-0.1df/dfcdrom.glade2.h:24
-#: ../plugins/dfinput/dfinput.glade2.h:8 ../win32/gui/WndMain.c:1307
+#: ../plugins/dfinput/dfinput.ui.h:8
+#: ../win32/gui/WndMain.c:1307
msgid "Options"
msgstr "选项"
@@ -1381,119 +1434,135 @@ msgstr "右摇杆下方向"
msgid "R-Stick Up"
msgstr "右摇杆上方向"
-#: ../plugins/dfinput/cfg-gtk2.c:103 ../plugins/dfinput/cfg-gtk2.c:142
+#: ../plugins/dfinput/cfg-gtk2.c:100
+#: ../plugins/dfinput/cfg-gtk2.c:139
msgid "Centered"
msgstr "居中"
-#: ../plugins/dfinput/cfg-gtk2.c:103 ../plugins/dfinput/cfg-gtk2.c:142
+#: ../plugins/dfinput/cfg-gtk2.c:100
+#: ../plugins/dfinput/cfg-gtk2.c:139
msgid "Up"
msgstr "上"
-#: ../plugins/dfinput/cfg-gtk2.c:103 ../plugins/dfinput/cfg-gtk2.c:142
+#: ../plugins/dfinput/cfg-gtk2.c:100
+#: ../plugins/dfinput/cfg-gtk2.c:139
msgid "Right"
msgstr "右方向键"
-#: ../plugins/dfinput/cfg-gtk2.c:103 ../plugins/dfinput/cfg-gtk2.c:142
+#: ../plugins/dfinput/cfg-gtk2.c:100
+#: ../plugins/dfinput/cfg-gtk2.c:139
msgid "Rightup"
msgstr "右上"
-#: ../plugins/dfinput/cfg-gtk2.c:104 ../plugins/dfinput/cfg-gtk2.c:143
+#: ../plugins/dfinput/cfg-gtk2.c:101
+#: ../plugins/dfinput/cfg-gtk2.c:140
msgid "Down"
msgstr "下"
-#: ../plugins/dfinput/cfg-gtk2.c:104 ../plugins/dfinput/cfg-gtk2.c:143
+#: ../plugins/dfinput/cfg-gtk2.c:101
+#: ../plugins/dfinput/cfg-gtk2.c:140
msgid "Rightdown"
msgstr "右下"
-#: ../plugins/dfinput/cfg-gtk2.c:104 ../plugins/dfinput/cfg-gtk2.c:143
+#: ../plugins/dfinput/cfg-gtk2.c:101
+#: ../plugins/dfinput/cfg-gtk2.c:140
msgid "Left"
msgstr "左"
-#: ../plugins/dfinput/cfg-gtk2.c:104 ../plugins/dfinput/cfg-gtk2.c:143
+#: ../plugins/dfinput/cfg-gtk2.c:101
+#: ../plugins/dfinput/cfg-gtk2.c:140
msgid "Leftup"
msgstr "左上"
-#: ../plugins/dfinput/cfg-gtk2.c:105 ../plugins/dfinput/cfg-gtk2.c:144
+#: ../plugins/dfinput/cfg-gtk2.c:102
+#: ../plugins/dfinput/cfg-gtk2.c:141
msgid "Leftdown"
msgstr "左下"
-#: ../plugins/dfinput/cfg-gtk2.c:109 ../plugins/dfinput/cfg-gtk2.c:148
+#: ../plugins/dfinput/cfg-gtk2.c:106
+#: ../plugins/dfinput/cfg-gtk2.c:145
#, c-format
msgid "Joystick: Button %d"
msgstr "手柄: 按钮 %d"
-#: ../plugins/dfinput/cfg-gtk2.c:113 ../plugins/dfinput/cfg-gtk2.c:152
+#: ../plugins/dfinput/cfg-gtk2.c:110
+#: ../plugins/dfinput/cfg-gtk2.c:149
#, c-format
msgid "Joystick: Axis %d%c"
msgstr "手柄: 轴 %d%c"
-#: ../plugins/dfinput/cfg-gtk2.c:118 ../plugins/dfinput/cfg-gtk2.c:157
+#: ../plugins/dfinput/cfg-gtk2.c:115
+#: ../plugins/dfinput/cfg-gtk2.c:154
#, c-format
msgid "Joystick: Hat %d %s"
msgstr "Joystick: 操纵杆 %d %s"
-#: ../plugins/dfinput/cfg-gtk2.c:133 ../plugins/dfinput/cfg-gtk2.c:172
+#: ../plugins/dfinput/cfg-gtk2.c:130
+#: ../plugins/dfinput/cfg-gtk2.c:169
msgid "Keyboard:"
msgstr "键盘:"
-#: ../plugins/dfinput/cfg-gtk2.c:137 ../plugins/dfinput/cfg-gtk2.c:176
+#: ../plugins/dfinput/cfg-gtk2.c:134
+#: ../plugins/dfinput/cfg-gtk2.c:173
msgid "(Not Set)"
msgstr "(未设定)"
-#: ../plugins/dfinput/cfg-gtk2.c:559
+#: ../plugins/dfinput/cfg-gtk2.c:542
#: ../plugins/peopsxgl/gpucfg/peopsxgl.ui.h:55
msgid "None"
msgstr "无"
-#: ../plugins/dfinput/cfg-gtk2.c:601
+#: ../plugins/dfinput/cfg-gtk2.c:584
msgid "Gamepad/Keyboard Input Configuration"
msgstr "手柄/键盘输入配置"
-#: ../plugins/dfinput/cfg-gtk2.c:607 ../plugins/dfinput/cfg-gtk2.c:627
+#: ../plugins/dfinput/cfg-gtk2.c:590
+#: ../plugins/dfinput/cfg-gtk2.c:610
msgid "Key"
msgstr "按钮"
-#: ../plugins/dfinput/cfg-gtk2.c:613 ../plugins/dfinput/cfg-gtk2.c:633
+#: ../plugins/dfinput/cfg-gtk2.c:596
+#: ../plugins/dfinput/cfg-gtk2.c:616
msgid "Button"
msgstr "按键"
-#: ../plugins/dfinput/dfinput.glade2.h:1
+#: ../plugins/dfinput/dfinput.ui.h:1
+msgid "Analog Pad"
+msgstr "摇杆手柄"
+
+#: ../plugins/dfinput/dfinput.ui.h:2
msgid "Change"
msgstr "更改"
-#: ../plugins/dfinput/dfinput.glade2.h:2
+#: ../plugins/dfinput/dfinput.ui.h:3
msgid "Controller 1"
msgstr "控制器 1"
-#: ../plugins/dfinput/dfinput.glade2.h:3
+#: ../plugins/dfinput/dfinput.ui.h:4
msgid "Controller 2"
msgstr "控制器 2"
-#: ../plugins/dfinput/dfinput.glade2.h:4
+#: ../plugins/dfinput/dfinput.ui.h:5
msgid "Device:"
msgstr "设备:"
-#: ../plugins/dfinput/dfinput.glade2.h:5
-msgid ""
-"Digital Pad\n"
-"Analog Pad"
-msgstr ""
-"普通手柄\n"
-"摇杆手柄"
+#: ../plugins/dfinput/dfinput.ui.h:6
+msgid "Digital Pad"
+msgstr "普通手柄"
-#: ../plugins/dfinput/dfinput.glade2.h:7
+#: ../plugins/dfinput/dfinput.ui.h:7
msgid "Multi-Threaded (Recommended)"
msgstr "多线程 (推荐)"
-#: ../plugins/dfinput/dfinput.glade2.h:9
+#: ../plugins/dfinput/dfinput.ui.h:9
msgid "Reset"
msgstr "重置"
-#: ../plugins/dfinput/dfinput.glade2.h:10
+#: ../plugins/dfinput/dfinput.ui.h:10
msgid "Type:"
msgstr "类型:"
-#: ../plugins/dfinput/pad.c:22
+#: ../plugins/dfinput/pad.c:24
msgid "Gamepad/Keyboard Input"
msgstr "手柄/键盘输入"
@@ -1511,36 +1580,33 @@ msgstr "无法连接到 %s: %s\n"
msgid "Error allocating memory!\n"
msgstr "分配内存错误!\n"
-#: ../plugins/dfnet/dfnet.glade2.h:1
+#: ../plugins/dfnet/dfnet.ui.h:1
msgid "Client (Player2)"
msgstr "客户端 (玩家 2)"
-#: ../plugins/dfnet/dfnet.glade2.h:2
+#: ../plugins/dfnet/dfnet.ui.h:2
msgid "Copy PC IP to Clipboard"
msgstr "将本机 IP 复制到剪贴板"
-#: ../plugins/dfnet/dfnet.glade2.h:3
-msgid ""
-"Do not change if not necessary (remember it must be changed on both sides)."
+#: ../plugins/dfnet/dfnet.ui.h:3
+msgid "Do not change if not necessary (remember it must be changed on both sides)."
msgstr "如非必要,请勿改动 (必须在两端都要改动)。"
-#: ../plugins/dfnet/dfnet.glade2.h:4
+#: ../plugins/dfnet/dfnet.ui.h:4
msgid "Play Offline"
msgstr "离线运行"
-#: ../plugins/dfnet/dfnet.glade2.h:5
+#: ../plugins/dfnet/dfnet.ui.h:5
msgid "Port Number"
msgstr "端口号"
-#: ../plugins/dfnet/dfnet.glade2.h:6
+#: ../plugins/dfnet/dfnet.ui.h:6
msgid ""
"Select here if you'll be Server (Player1) or Client (Player2).\n"
"\n"
-"If you select Server you must Copy your IP address to the Clipboard and "
-"paste if (Ctrl+V) wherever the Client can see it.\n"
+"If you select Server you must Copy your IP address to the Clipboard and paste if (Ctrl+V) wherever the Client can see it.\n"
"\n"
-"If you selected Client please enter the IP address the Server gave to you in "
-"the IP Address Control."
+"If you selected Client please enter the IP address the Server gave to you in the IP Address Control."
msgstr ""
"请在此选择作为服务器 (玩家 1) 还是作为客户端 (玩家 2) 来运行。\n"
"\n"
@@ -1548,24 +1614,25 @@ msgstr ""
"\n"
"如果您选择作为客户端,请输入服务器方提供给您的 IP 地址。"
-#: ../plugins/dfnet/dfnet.glade2.h:11
+#: ../plugins/dfnet/dfnet.ui.h:11
msgid "Server (Player1)"
msgstr "服务器 (玩家 1)"
-#: ../plugins/dfnet/dfnet.glade2.h:12
+#: ../plugins/dfnet/dfnet.ui.h:12
msgid "Start Game"
msgstr "开始游戏"
-#: ../plugins/dfnet/gui.c:31 ../plugins/dfnet/gui.c:112
+#: ../plugins/dfnet/gui.c:30
+#: ../plugins/dfnet/gui.c:112
#: ../win32/gui/ConfigurePlugins.c:616
msgid "NetPlay"
msgstr "联网游戏"
-#: ../plugins/dfnet/gui.c:39
+#: ../plugins/dfnet/gui.c:38
msgid "Nothing to configure"
msgstr "没有可以配置的项目"
-#: ../plugins/dfnet/gui.c:95
+#: ../plugins/dfnet/gui.c:94
#, c-format
msgid "IP %s"
msgstr "IP %s"
@@ -2354,10 +2421,14 @@ msgstr ""
msgid "About"
msgstr "关于 PCSX"
-#: ../win32/gui/AboutDlg.c:48 ../win32/gui/AboutDlg.c:52
-#: ../win32/gui/CheatDlg.c:69 ../win32/gui/CheatDlg.c:119
-#: ../win32/gui/ConfigurePlugins.c:483 ../win32/gui/ConfigurePlugins.c:614
-#: ../win32/gui/WndMain.c:1056 ../win32/gui/WndMain.c:1292
+#: ../win32/gui/AboutDlg.c:48
+#: ../win32/gui/AboutDlg.c:52
+#: ../win32/gui/CheatDlg.c:69
+#: ../win32/gui/CheatDlg.c:119
+#: ../win32/gui/ConfigurePlugins.c:483
+#: ../win32/gui/ConfigurePlugins.c:614
+#: ../win32/gui/WndMain.c:1056
+#: ../win32/gui/WndMain.c:1292
msgid "OK"
msgstr "确定"
@@ -2365,19 +2436,24 @@ msgstr "确定"
msgid "PCSX EMU\n"
msgstr "PCSX 模拟器\n"
-#: ../win32/gui/CheatDlg.c:51 ../win32/gui/CheatDlg.c:223
+#: ../win32/gui/CheatDlg.c:51
+#: ../win32/gui/CheatDlg.c:223
#: ../win32/gui/CheatDlg.c:270
msgid "Yes"
msgstr "是"
-#: ../win32/gui/CheatDlg.c:51 ../win32/gui/CheatDlg.c:223
+#: ../win32/gui/CheatDlg.c:51
+#: ../win32/gui/CheatDlg.c:223
#: ../win32/gui/CheatDlg.c:270
msgid "No"
msgstr "否"
-#: ../win32/gui/CheatDlg.c:70 ../win32/gui/CheatDlg.c:120
-#: ../win32/gui/ConfigurePlugins.c:484 ../win32/gui/ConfigurePlugins.c:615
-#: ../win32/gui/WndMain.c:1057 ../win32/gui/WndMain.c:1293
+#: ../win32/gui/CheatDlg.c:70
+#: ../win32/gui/CheatDlg.c:120
+#: ../win32/gui/ConfigurePlugins.c:484
+#: ../win32/gui/ConfigurePlugins.c:615
+#: ../win32/gui/WndMain.c:1057
+#: ../win32/gui/WndMain.c:1293
msgid "Cancel"
msgstr "取消"
@@ -2413,7 +2489,8 @@ msgstr "关闭(&C)"
msgid "Enabled"
msgstr "启用"
-#: ../win32/gui/CheatDlg.c:282 ../win32/gui/CheatDlg.c:311
+#: ../win32/gui/CheatDlg.c:282
+#: ../win32/gui/CheatDlg.c:311
msgid "PCSX Cheat Code Files"
msgstr "PCSX 作弊码文件"
@@ -2457,7 +2534,8 @@ msgstr "无改变"
msgid "No addresses found."
msgstr "未找到地址。"
-#: ../win32/gui/CheatDlg.c:505 ../win32/gui/CheatDlg.c:596
+#: ../win32/gui/CheatDlg.c:505
+#: ../win32/gui/CheatDlg.c:596
msgid "Address:"
msgstr "地址:"
@@ -2570,21 +2648,30 @@ msgstr "设置 BIOS 目录"
msgid "Set Plugins Directory"
msgstr "设置插件目录"
-#: ../win32/gui/ConfigurePlugins.c:493 ../win32/gui/ConfigurePlugins.c:496
-#: ../win32/gui/ConfigurePlugins.c:499 ../win32/gui/ConfigurePlugins.c:502
-#: ../win32/gui/ConfigurePlugins.c:505 ../win32/gui/ConfigurePlugins.c:617
+#: ../win32/gui/ConfigurePlugins.c:493
+#: ../win32/gui/ConfigurePlugins.c:496
+#: ../win32/gui/ConfigurePlugins.c:499
+#: ../win32/gui/ConfigurePlugins.c:502
+#: ../win32/gui/ConfigurePlugins.c:505
+#: ../win32/gui/ConfigurePlugins.c:617
msgid "Configure..."
msgstr "配置..."
-#: ../win32/gui/ConfigurePlugins.c:494 ../win32/gui/ConfigurePlugins.c:497
-#: ../win32/gui/ConfigurePlugins.c:500 ../win32/gui/ConfigurePlugins.c:503
-#: ../win32/gui/ConfigurePlugins.c:506 ../win32/gui/ConfigurePlugins.c:618
+#: ../win32/gui/ConfigurePlugins.c:494
+#: ../win32/gui/ConfigurePlugins.c:497
+#: ../win32/gui/ConfigurePlugins.c:500
+#: ../win32/gui/ConfigurePlugins.c:503
+#: ../win32/gui/ConfigurePlugins.c:506
+#: ../win32/gui/ConfigurePlugins.c:618
msgid "Test..."
msgstr "测试..."
-#: ../win32/gui/ConfigurePlugins.c:495 ../win32/gui/ConfigurePlugins.c:498
-#: ../win32/gui/ConfigurePlugins.c:501 ../win32/gui/ConfigurePlugins.c:504
-#: ../win32/gui/ConfigurePlugins.c:507 ../win32/gui/ConfigurePlugins.c:619
+#: ../win32/gui/ConfigurePlugins.c:495
+#: ../win32/gui/ConfigurePlugins.c:498
+#: ../win32/gui/ConfigurePlugins.c:501
+#: ../win32/gui/ConfigurePlugins.c:504
+#: ../win32/gui/ConfigurePlugins.c:507
+#: ../win32/gui/ConfigurePlugins.c:619
msgid "About..."
msgstr "关于..."
@@ -2593,26 +2680,29 @@ msgid "NetPlay Configuration"
msgstr "联网游戏配置"
#: ../win32/gui/ConfigurePlugins.c:620
-msgid ""
-"Note: The NetPlay Plugin Directory should be the same as the other Plugins."
+msgid "Note: The NetPlay Plugin Directory should be the same as the other Plugins."
msgstr "注意: 联网游戏插件应和其它插件放在同一目录中。"
-#: ../win32/gui/plugin.c:94 ../win32/gui/WndMain.c:320
+#: ../win32/gui/plugin.c:94
+#: ../win32/gui/WndMain.c:320
#, c-format
msgid "*PCSX*: Saved State %d"
msgstr "*PCSX*: Saved State %d"
-#: ../win32/gui/plugin.c:95 ../win32/gui/WndMain.c:321
+#: ../win32/gui/plugin.c:95
+#: ../win32/gui/WndMain.c:321
#, c-format
msgid "*PCSX*: Error Saving State %d"
msgstr "*PCSX*: Error Saving State %d"
-#: ../win32/gui/plugin.c:111 ../win32/gui/WndMain.c:298
+#: ../win32/gui/plugin.c:111
+#: ../win32/gui/WndMain.c:298
#, c-format
msgid "*PCSX*: Loaded State %d"
msgstr "*PCSX*: Loaded State %d"
-#: ../win32/gui/plugin.c:112 ../win32/gui/WndMain.c:299
+#: ../win32/gui/plugin.c:112
+#: ../win32/gui/WndMain.c:299
#, c-format
msgid "*PCSX*: Error Loading State %d"
msgstr "*PCSX*: Error Loading State %d"
@@ -2659,7 +2749,8 @@ msgstr "*PCSX*: CdRom Case Closed"
msgid "Connecting..."
msgstr "正在连接..."
-#: ../win32/gui/plugin.c:185 ../win32/gui/plugin.c:192
+#: ../win32/gui/plugin.c:185
+#: ../win32/gui/plugin.c:192
#, c-format
msgid "Please wait while connecting... %c\n"
msgstr "请稍候,正在连接... %c\n"
@@ -2683,49 +2774,49 @@ msgstr "无法打开 SPU 插件 (%d)"
msgid "Error Opening PAD1 Plugin (%d)"
msgstr "无法打开 PAD1 插件 (%d)"
-#: ../win32/gui/plugin.c:291
+#: ../win32/gui/plugin.c:293
#, c-format
msgid "Error Opening PAD2 Plugin (%d)"
msgstr "无法打开 PAD2 插件 (%d)"
-#: ../win32/gui/plugin.c:319
+#: ../win32/gui/plugin.c:323
msgid "Error Closing CDR Plugin"
msgstr "无法关闭 CD-ROM 插件 (%d)"
-#: ../win32/gui/plugin.c:321
+#: ../win32/gui/plugin.c:325
msgid "Error Closing GPU Plugin"
msgstr "无法关闭 GPU 插件"
-#: ../win32/gui/plugin.c:323
+#: ../win32/gui/plugin.c:327
msgid "Error Closing SPU Plugin"
msgstr "无法关闭 SPU 插件"
-#: ../win32/gui/plugin.c:341
+#: ../win32/gui/plugin.c:345
#, c-format
msgid "CDRinit error: %d"
msgstr "CDRinit 错误: %d"
-#: ../win32/gui/plugin.c:343
+#: ../win32/gui/plugin.c:347
#, c-format
msgid "GPUinit error: %d"
msgstr "GPUinit 错误: %d"
-#: ../win32/gui/plugin.c:345
+#: ../win32/gui/plugin.c:349
#, c-format
msgid "SPUinit error: %d"
msgstr "SPUinit 错误: %d"
-#: ../win32/gui/plugin.c:347
+#: ../win32/gui/plugin.c:351
#, c-format
msgid "PAD1init error: %d"
msgstr "PAD1init 错误: %d"
-#: ../win32/gui/plugin.c:349
+#: ../win32/gui/plugin.c:353
#, c-format
msgid "PAD2init error: %d"
msgstr "PAD2init 错误: %d"
-#: ../win32/gui/plugin.c:352
+#: ../win32/gui/plugin.c:356
#, c-format
msgid "NETinit error: %d"
msgstr "NETinit 错误: %d"
@@ -2746,7 +2837,8 @@ msgstr "德语"
msgid "Greek"
msgstr "希腊语"
-#: ../win32/gui/WndMain.c:81 ../win32/gui/WndMain.c:1656
+#: ../win32/gui/WndMain.c:81
+#: ../win32/gui/WndMain.c:1656
#: ../win32/gui/WndMain.c:1658
msgid "English"
msgstr "英语"
@@ -2813,7 +2905,8 @@ msgstr ""
"\t-cdfile FILE\t运行 CD 镜像文件 (需要 -nogui)\n"
"\t-help\t\t显示此信息"
-#: ../win32/gui/WndMain.c:339 ../win32/gui/WndMain.c:385
+#: ../win32/gui/WndMain.c:339
+#: ../win32/gui/WndMain.c:385
msgid "PCSX State Format"
msgstr "PCSX 即时存档格式"
@@ -2861,15 +2954,18 @@ msgstr "终止链接块"
msgid "Memcard Manager"
msgstr "记忆卡管理器"
-#: ../win32/gui/WndMain.c:1058 ../win32/gui/WndMain.c:1061
+#: ../win32/gui/WndMain.c:1058
+#: ../win32/gui/WndMain.c:1061
msgid "Select Mcd"
msgstr "选择"
-#: ../win32/gui/WndMain.c:1059 ../win32/gui/WndMain.c:1062
+#: ../win32/gui/WndMain.c:1059
+#: ../win32/gui/WndMain.c:1062
msgid "Format Mcd"
msgstr "格式化"
-#: ../win32/gui/WndMain.c:1060 ../win32/gui/WndMain.c:1063
+#: ../win32/gui/WndMain.c:1060
+#: ../win32/gui/WndMain.c:1063
msgid "Reload Mcd"
msgstr "重新加载"
@@ -2905,12 +3001,14 @@ msgstr "记忆卡 2"
msgid "Are you sure you want to paste this selection?"
msgstr "是否确认粘贴此选中内容?"
-#: ../win32/gui/WndMain.c:1126 ../win32/gui/WndMain.c:1237
+#: ../win32/gui/WndMain.c:1126
+#: ../win32/gui/WndMain.c:1237
#: ../win32/gui/WndMain.c:1244
msgid "Confirmation"
msgstr "确认"
-#: ../win32/gui/WndMain.c:1237 ../win32/gui/WndMain.c:1244
+#: ../win32/gui/WndMain.c:1237
+#: ../win32/gui/WndMain.c:1244
msgid "Are you sure you want to format this Memory Card?"
msgstr "是否确认格式化此记忆卡?"
@@ -3030,43 +3128,53 @@ msgstr "保存(&S)"
msgid "&Load"
msgstr "读取(&L)"
-#: ../win32/gui/WndMain.c:1611 ../win32/gui/WndMain.c:1621
+#: ../win32/gui/WndMain.c:1611
+#: ../win32/gui/WndMain.c:1621
msgid "&Other..."
msgstr "其它(&O)..."
-#: ../win32/gui/WndMain.c:1612 ../win32/gui/WndMain.c:1622
+#: ../win32/gui/WndMain.c:1612
+#: ../win32/gui/WndMain.c:1622
msgid "Slot &9"
msgstr "存档 9(&9)"
-#: ../win32/gui/WndMain.c:1613 ../win32/gui/WndMain.c:1623
+#: ../win32/gui/WndMain.c:1613
+#: ../win32/gui/WndMain.c:1623
msgid "Slot &8"
msgstr "存档 8(&8)"
-#: ../win32/gui/WndMain.c:1614 ../win32/gui/WndMain.c:1624
+#: ../win32/gui/WndMain.c:1614
+#: ../win32/gui/WndMain.c:1624
msgid "Slot &7"
msgstr "存档 7(&7)"
-#: ../win32/gui/WndMain.c:1615 ../win32/gui/WndMain.c:1625
+#: ../win32/gui/WndMain.c:1615
+#: ../win32/gui/WndMain.c:1625
msgid "Slot &6"
msgstr "存档 6(&6)"
-#: ../win32/gui/WndMain.c:1616 ../win32/gui/WndMain.c:1626
+#: ../win32/gui/WndMain.c:1616
+#: ../win32/gui/WndMain.c:1626
msgid "Slot &5"
msgstr "存档 5(&5)"
-#: ../win32/gui/WndMain.c:1617 ../win32/gui/WndMain.c:1627
+#: ../win32/gui/WndMain.c:1617
+#: ../win32/gui/WndMain.c:1627
msgid "Slot &4"
msgstr "存档 4(&4)"
-#: ../win32/gui/WndMain.c:1618 ../win32/gui/WndMain.c:1628
+#: ../win32/gui/WndMain.c:1618
+#: ../win32/gui/WndMain.c:1628
msgid "Slot &3"
msgstr "存档 3(&3)"
-#: ../win32/gui/WndMain.c:1619 ../win32/gui/WndMain.c:1629
+#: ../win32/gui/WndMain.c:1619
+#: ../win32/gui/WndMain.c:1629
msgid "Slot &2"
msgstr "存档 2(&2)"
-#: ../win32/gui/WndMain.c:1620 ../win32/gui/WndMain.c:1630
+#: ../win32/gui/WndMain.c:1620
+#: ../win32/gui/WndMain.c:1630
msgid "Slot &1"
msgstr "存档 1(&1)"
diff --git a/po/zh_TW.po b/po/zh_TW.po
index e2be2a7b..8bd28bc2 100644
--- a/po/zh_TW.po
+++ b/po/zh_TW.po
@@ -7,14 +7,14 @@ msgid ""
msgstr ""
"Project-Id-Version: pcsxr 1.0\n"
"Report-Msgid-Bugs-To: whistler_wmz@users.sf.net\n"
-"POT-Creation-Date: 2011-01-02 17:37+0800\n"
+"POT-Creation-Date: 2011-01-09 15:27+0800\n"
"PO-Revision-Date: 2010-12-29 11:28+0800\n"
"Last-Translator: Wei Mingzhi <whistler_wmz@users.sf.net>\n"
"Language-Team: Traditional Chinese <whistler@openoffice.org>\n"
-"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"Language: \n"
#: ../data/pcsx.glade2.h:1
msgid ""
@@ -960,27 +960,27 @@ msgstr "無法開啟 GPU 外掛!"
msgid "Error opening Controller 1 plugin!"
msgstr "無法開啟 \"控制器 1\" 外掛!"
-#: ../gui/Plugin.c:333
+#: ../gui/Plugin.c:335
msgid "Error opening Controller 2 plugin!"
msgstr "無法開啟 \"控制器 2\" 外掛!"
-#: ../gui/Plugin.c:413
+#: ../gui/Plugin.c:417
msgid "Error closing CD-ROM plugin!"
msgstr "無法關閉 CD-ROM 外掛!"
-#: ../gui/Plugin.c:415
+#: ../gui/Plugin.c:419
msgid "Error closing SPU plugin!"
msgstr "無法關閉 SPU 外掛!"
-#: ../gui/Plugin.c:417
+#: ../gui/Plugin.c:421
msgid "Error closing Controller 1 Plugin!"
msgstr "無法關閉 \"控制器 1\" 外掛!"
-#: ../gui/Plugin.c:419
+#: ../gui/Plugin.c:423
msgid "Error closing Controller 2 plugin!"
msgstr "無法關閉 \"控制器 2\" 外掛!"
-#: ../gui/Plugin.c:421
+#: ../gui/Plugin.c:425
msgid "Error closing GPU plugin!"
msgstr "無法關閉 GPU 外掛!"
@@ -1048,82 +1048,82 @@ msgstr "未知 CPE opcode %02x 位於 %08x.\n"
msgid "This file does not appear to be a valid PSX file.\n"
msgstr "此檔案不是一個合法的 PSX 檔案。\n"
-#: ../libpcsxcore/plugins.c:183
+#: ../libpcsxcore/plugins.c:189
#, c-format
msgid "Error loading %s: %s"
msgstr "無法加載 %s: %s"
-#: ../libpcsxcore/plugins.c:235
+#: ../libpcsxcore/plugins.c:243
#, c-format
msgid "Could not load GPU plugin %s!"
msgstr "無法加載 GPU 外掛 %s!"
-#: ../libpcsxcore/plugins.c:308
+#: ../libpcsxcore/plugins.c:318
#, c-format
msgid "Could not load CD-ROM plugin %s!"
msgstr "無法加載 CD-ROM 外掛 %s!"
-#: ../libpcsxcore/plugins.c:356
+#: ../libpcsxcore/plugins.c:366
#, c-format
msgid "Could not load SPU plugin %s!"
msgstr "無法加載 SPU 外掛 %s!"
-#: ../libpcsxcore/plugins.c:493
+#: ../libpcsxcore/plugins.c:505
#, c-format
msgid "Could not load Controller 1 plugin %s!"
msgstr "無法加載 \"控制器1\" 外掛 %s!"
-#: ../libpcsxcore/plugins.c:547
+#: ../libpcsxcore/plugins.c:563
#, c-format
msgid "Could not load Controller 2 plugin %s!"
msgstr "無法加載 \"控制器2\" 外掛 %s!"
-#: ../libpcsxcore/plugins.c:590
+#: ../libpcsxcore/plugins.c:608
#, c-format
msgid "Could not load NetPlay plugin %s!"
msgstr "無法加載聯線遊戲外掛 %s!"
-#: ../libpcsxcore/plugins.c:670
+#: ../libpcsxcore/plugins.c:688
#, c-format
msgid "Could not load SIO1 plugin %s!"
msgstr "無法加載 SIO1 外掛 %s!"
-#: ../libpcsxcore/plugins.c:755
+#: ../libpcsxcore/plugins.c:773
#, c-format
msgid "Error initializing CD-ROM plugin: %d"
msgstr "CD-ROM 外掛初始化錯誤: %d"
-#: ../libpcsxcore/plugins.c:757
+#: ../libpcsxcore/plugins.c:775
#, c-format
msgid "Error initializing GPU plugin: %d"
msgstr "GPU 外掛初始化錯誤: %d"
-#: ../libpcsxcore/plugins.c:759
+#: ../libpcsxcore/plugins.c:777
#, c-format
msgid "Error initializing SPU plugin: %d"
msgstr "SPU 外掛初始化錯誤: %d"
-#: ../libpcsxcore/plugins.c:761
+#: ../libpcsxcore/plugins.c:779
#, c-format
msgid "Error initializing Controller 1 plugin: %d"
msgstr "\"控制器1\" 外掛初始化錯誤: %d"
-#: ../libpcsxcore/plugins.c:763
+#: ../libpcsxcore/plugins.c:781
#, c-format
msgid "Error initializing Controller 2 plugin: %d"
msgstr "\"控制器2\" 外掛初始化錯誤: %d"
-#: ../libpcsxcore/plugins.c:767
+#: ../libpcsxcore/plugins.c:785
#, c-format
msgid "Error initializing NetPlay plugin: %d"
msgstr "聯線遊戲外掛初始化錯誤: %d"
-#: ../libpcsxcore/plugins.c:772
+#: ../libpcsxcore/plugins.c:790
#, c-format
msgid "Error initializing SIO1 plugin: %d"
msgstr "SIO1 外掛初始化錯誤: %d"
-#: ../libpcsxcore/plugins.c:775
+#: ../libpcsxcore/plugins.c:793
msgid "Plugins loaded.\n"
msgstr "外掛已加載。\n"
@@ -1255,7 +1255,7 @@ msgstr ""
"多執行緒 - 較快 (使用快取)"
#: ../plugins/dfcdrom/cdrcfg-0.1df/dfcdrom.glade2.h:24
-#: ../plugins/dfinput/dfinput.glade2.h:8 ../win32/gui/WndMain.c:1307
+#: ../plugins/dfinput/dfinput.ui.h:8 ../win32/gui/WndMain.c:1307
msgid "Options"
msgstr "選項"
@@ -1371,119 +1371,125 @@ msgstr "右搖桿下方向"
msgid "R-Stick Up"
msgstr "右搖桿上方向"
-#: ../plugins/dfinput/cfg-gtk2.c:103 ../plugins/dfinput/cfg-gtk2.c:142
+#: ../plugins/dfinput/cfg-gtk2.c:100 ../plugins/dfinput/cfg-gtk2.c:139
msgid "Centered"
msgstr "居中"
-#: ../plugins/dfinput/cfg-gtk2.c:103 ../plugins/dfinput/cfg-gtk2.c:142
+#: ../plugins/dfinput/cfg-gtk2.c:100 ../plugins/dfinput/cfg-gtk2.c:139
msgid "Up"
msgstr "上"
-#: ../plugins/dfinput/cfg-gtk2.c:103 ../plugins/dfinput/cfg-gtk2.c:142
+#: ../plugins/dfinput/cfg-gtk2.c:100 ../plugins/dfinput/cfg-gtk2.c:139
msgid "Right"
msgstr "右"
-#: ../plugins/dfinput/cfg-gtk2.c:103 ../plugins/dfinput/cfg-gtk2.c:142
+#: ../plugins/dfinput/cfg-gtk2.c:100 ../plugins/dfinput/cfg-gtk2.c:139
msgid "Rightup"
msgstr "右上"
-#: ../plugins/dfinput/cfg-gtk2.c:104 ../plugins/dfinput/cfg-gtk2.c:143
+#: ../plugins/dfinput/cfg-gtk2.c:101 ../plugins/dfinput/cfg-gtk2.c:140
msgid "Down"
msgstr "下"
-#: ../plugins/dfinput/cfg-gtk2.c:104 ../plugins/dfinput/cfg-gtk2.c:143
+#: ../plugins/dfinput/cfg-gtk2.c:101 ../plugins/dfinput/cfg-gtk2.c:140
msgid "Rightdown"
msgstr "右下"
-#: ../plugins/dfinput/cfg-gtk2.c:104 ../plugins/dfinput/cfg-gtk2.c:143
+#: ../plugins/dfinput/cfg-gtk2.c:101 ../plugins/dfinput/cfg-gtk2.c:140
msgid "Left"
msgstr "左"
-#: ../plugins/dfinput/cfg-gtk2.c:104 ../plugins/dfinput/cfg-gtk2.c:143
+#: ../plugins/dfinput/cfg-gtk2.c:101 ../plugins/dfinput/cfg-gtk2.c:140
msgid "Leftup"
msgstr "左上"
-#: ../plugins/dfinput/cfg-gtk2.c:105 ../plugins/dfinput/cfg-gtk2.c:144
+#: ../plugins/dfinput/cfg-gtk2.c:102 ../plugins/dfinput/cfg-gtk2.c:141
msgid "Leftdown"
msgstr "左下"
-#: ../plugins/dfinput/cfg-gtk2.c:109 ../plugins/dfinput/cfg-gtk2.c:148
+#: ../plugins/dfinput/cfg-gtk2.c:106 ../plugins/dfinput/cfg-gtk2.c:145
#, c-format
msgid "Joystick: Button %d"
msgstr "手把: 按鈕 %d"
-#: ../plugins/dfinput/cfg-gtk2.c:113 ../plugins/dfinput/cfg-gtk2.c:152
+#: ../plugins/dfinput/cfg-gtk2.c:110 ../plugins/dfinput/cfg-gtk2.c:149
#, c-format
msgid "Joystick: Axis %d%c"
msgstr "手把: 軸 %d%c"
-#: ../plugins/dfinput/cfg-gtk2.c:118 ../plugins/dfinput/cfg-gtk2.c:157
+#: ../plugins/dfinput/cfg-gtk2.c:115 ../plugins/dfinput/cfg-gtk2.c:154
#, c-format
msgid "Joystick: Hat %d %s"
msgstr "手把: Hat %d %s"
-#: ../plugins/dfinput/cfg-gtk2.c:133 ../plugins/dfinput/cfg-gtk2.c:172
+#: ../plugins/dfinput/cfg-gtk2.c:130 ../plugins/dfinput/cfg-gtk2.c:169
msgid "Keyboard:"
msgstr "鍵盤:"
-#: ../plugins/dfinput/cfg-gtk2.c:137 ../plugins/dfinput/cfg-gtk2.c:176
+#: ../plugins/dfinput/cfg-gtk2.c:134 ../plugins/dfinput/cfg-gtk2.c:173
msgid "(Not Set)"
msgstr "(未設定)"
-#: ../plugins/dfinput/cfg-gtk2.c:559
+#: ../plugins/dfinput/cfg-gtk2.c:542
#: ../plugins/peopsxgl/gpucfg/peopsxgl.ui.h:55
msgid "None"
msgstr "無"
-#: ../plugins/dfinput/cfg-gtk2.c:601
+#: ../plugins/dfinput/cfg-gtk2.c:584
msgid "Gamepad/Keyboard Input Configuration"
msgstr "手把/鍵盤輸入設定"
-#: ../plugins/dfinput/cfg-gtk2.c:607 ../plugins/dfinput/cfg-gtk2.c:627
+#: ../plugins/dfinput/cfg-gtk2.c:590 ../plugins/dfinput/cfg-gtk2.c:610
msgid "Key"
msgstr "按鍵"
-#: ../plugins/dfinput/cfg-gtk2.c:613 ../plugins/dfinput/cfg-gtk2.c:633
+#: ../plugins/dfinput/cfg-gtk2.c:596 ../plugins/dfinput/cfg-gtk2.c:616
msgid "Button"
msgstr "按鈕"
-#: ../plugins/dfinput/dfinput.glade2.h:1
+#: ../plugins/dfinput/dfinput.ui.h:1
+#, fuzzy
+msgid "Analog Pad"
+msgstr ""
+"普通手把\n"
+"類比手把"
+
+#: ../plugins/dfinput/dfinput.ui.h:2
msgid "Change"
msgstr "更改"
-#: ../plugins/dfinput/dfinput.glade2.h:2
+#: ../plugins/dfinput/dfinput.ui.h:3
msgid "Controller 1"
msgstr "控制器 1"
-#: ../plugins/dfinput/dfinput.glade2.h:3
+#: ../plugins/dfinput/dfinput.ui.h:4
msgid "Controller 2"
msgstr "控制器 2"
-#: ../plugins/dfinput/dfinput.glade2.h:4
+#: ../plugins/dfinput/dfinput.ui.h:5
msgid "Device:"
msgstr "裝置:"
-#: ../plugins/dfinput/dfinput.glade2.h:5
-msgid ""
-"Digital Pad\n"
-"Analog Pad"
+#: ../plugins/dfinput/dfinput.ui.h:6
+#, fuzzy
+msgid "Digital Pad"
msgstr ""
"普通手把\n"
"類比手把"
-#: ../plugins/dfinput/dfinput.glade2.h:7
+#: ../plugins/dfinput/dfinput.ui.h:7
msgid "Multi-Threaded (Recommended)"
msgstr "多執行緒 (建議使用)"
-#: ../plugins/dfinput/dfinput.glade2.h:9
+#: ../plugins/dfinput/dfinput.ui.h:9
msgid "Reset"
msgstr "重置"
-#: ../plugins/dfinput/dfinput.glade2.h:10
+#: ../plugins/dfinput/dfinput.ui.h:10
msgid "Type:"
msgstr "類型:"
-#: ../plugins/dfinput/pad.c:22
+#: ../plugins/dfinput/pad.c:24
msgid "Gamepad/Keyboard Input"
msgstr "手把/鍵盤輸入"
@@ -1501,28 +1507,28 @@ msgstr "無法連線至 %s: %s\n"
msgid "Error allocating memory!\n"
msgstr "分配記憶體錯誤!\n"
-#: ../plugins/dfnet/dfnet.glade2.h:1
+#: ../plugins/dfnet/dfnet.ui.h:1
msgid "Client (Player2)"
msgstr "客戶端 (玩家 2)"
-#: ../plugins/dfnet/dfnet.glade2.h:2
+#: ../plugins/dfnet/dfnet.ui.h:2
msgid "Copy PC IP to Clipboard"
msgstr "將本機 IP 複制到剪貼板"
-#: ../plugins/dfnet/dfnet.glade2.h:3
+#: ../plugins/dfnet/dfnet.ui.h:3
msgid ""
"Do not change if not necessary (remember it must be changed on both sides)."
msgstr "如非必要請勿更改 (必須在兩端都要更改)。"
-#: ../plugins/dfnet/dfnet.glade2.h:4
+#: ../plugins/dfnet/dfnet.ui.h:4
msgid "Play Offline"
msgstr "離線遊戲"
-#: ../plugins/dfnet/dfnet.glade2.h:5
+#: ../plugins/dfnet/dfnet.ui.h:5
msgid "Port Number"
msgstr "Port 號"
-#: ../plugins/dfnet/dfnet.glade2.h:6
+#: ../plugins/dfnet/dfnet.ui.h:6
msgid ""
"Select here if you'll be Server (Player1) or Client (Player2).\n"
"\n"
@@ -1538,24 +1544,24 @@ msgstr ""
"\n"
"如果您選擇客戶端,請輸入伺服器端提供給您的 IP 地址。"
-#: ../plugins/dfnet/dfnet.glade2.h:11
+#: ../plugins/dfnet/dfnet.ui.h:11
msgid "Server (Player1)"
msgstr "伺服器 (玩家 1)"
-#: ../plugins/dfnet/dfnet.glade2.h:12
+#: ../plugins/dfnet/dfnet.ui.h:12
msgid "Start Game"
msgstr "開始遊戲"
-#: ../plugins/dfnet/gui.c:31 ../plugins/dfnet/gui.c:112
+#: ../plugins/dfnet/gui.c:30 ../plugins/dfnet/gui.c:112
#: ../win32/gui/ConfigurePlugins.c:616
msgid "NetPlay"
msgstr "聯線遊戲"
-#: ../plugins/dfnet/gui.c:39
+#: ../plugins/dfnet/gui.c:38
msgid "Nothing to configure"
msgstr "沒有可以配置的內容"
-#: ../plugins/dfnet/gui.c:95
+#: ../plugins/dfnet/gui.c:94
#, c-format
msgid "IP %s"
msgstr "IP %s"
@@ -2704,49 +2710,49 @@ msgstr "無法開啟 SPU 外掛 (%d)"
msgid "Error Opening PAD1 Plugin (%d)"
msgstr "無法開啟 PAD1 外掛 (%d)"
-#: ../win32/gui/plugin.c:291
+#: ../win32/gui/plugin.c:293
#, c-format
msgid "Error Opening PAD2 Plugin (%d)"
msgstr "無法開啟 PAD2 外掛 (%d)"
-#: ../win32/gui/plugin.c:319
+#: ../win32/gui/plugin.c:323
msgid "Error Closing CDR Plugin"
msgstr "無法關閉 CD-ROM 外掛 (%d)"
-#: ../win32/gui/plugin.c:321
+#: ../win32/gui/plugin.c:325
msgid "Error Closing GPU Plugin"
msgstr "無法關閉 GPU 外掛"
-#: ../win32/gui/plugin.c:323
+#: ../win32/gui/plugin.c:327
msgid "Error Closing SPU Plugin"
msgstr "無法關閉 SPU 外掛"
-#: ../win32/gui/plugin.c:341
+#: ../win32/gui/plugin.c:345
#, c-format
msgid "CDRinit error: %d"
msgstr "CDRinit 錯誤: %d"
-#: ../win32/gui/plugin.c:343
+#: ../win32/gui/plugin.c:347
#, c-format
msgid "GPUinit error: %d"
msgstr "GPUinit 錯誤: %d"
-#: ../win32/gui/plugin.c:345
+#: ../win32/gui/plugin.c:349
#, c-format
msgid "SPUinit error: %d"
msgstr "SPUinit 錯誤: %d"
-#: ../win32/gui/plugin.c:347
+#: ../win32/gui/plugin.c:351
#, c-format
msgid "PAD1init error: %d"
msgstr "PAD1init 錯誤: %d"
-#: ../win32/gui/plugin.c:349
+#: ../win32/gui/plugin.c:353
#, c-format
msgid "PAD2init error: %d"
msgstr "PAD2init 錯誤: %d"
-#: ../win32/gui/plugin.c:352
+#: ../win32/gui/plugin.c:356
#, c-format
msgid "NETinit error: %d"
msgstr "NETinit 錯誤: %d"
@@ -3147,4 +3153,3 @@ msgstr "Pcsx 消息"
#: ../win32/gui/WndMain.c:1866
msgid "Error Loading Symbol"
msgstr "無法加載符號"
-
diff --git a/win32/plugins/PadSSSPSX/PadSSSPSX.cpp b/win32/plugins/PadSSSPSX/PadSSSPSX.cpp
new file mode 100644
index 00000000..2034ef72
--- /dev/null
+++ b/win32/plugins/PadSSSPSX/PadSSSPSX.cpp
@@ -0,0 +1,1136 @@
+#define WINVER 0x0500
+#define _WIN32_WINNT WINVER
+#define DIRECTINPUT_VERSION 0x0800
+
+// Modified by Wei Mingzhi <whistler_wmz@users.sf.net> at 10/2/2009
+// Added default keys, use registry instead of configuration file
+
+// Modified by Wei Mingzhi <whistler_wmz@users.sf.net> at 12/3/2009
+// Quick hack fix for FF8 "reverting" problem in menus
+// Added configuration for enabling/disabling DualShock
+
+#include <windows.h>
+#include <windowsx.h>
+#include <commctrl.h>
+#include <dinput.h>
+
+#include "PadSSSPSX.h"
+
+static const char* LibraryName = "SSSPSX PAD Plugin Pressure Mod";
+static const unsigned char version = 0x0002;
+static const unsigned char revision = 1;
+static const unsigned char build = 6;
+
+HMODULE hInstance;
+HWND hTargetWnd;
+
+static void (CALLBACK *gpuVisualVibration)(unsigned long, unsigned long) = NULL;
+
+static struct
+{
+ Config config;
+ int devcnt;
+ LPDIRECTINPUT8 pDInput;
+ LPDIRECTINPUTDEVICE8 pDKeyboard;
+ LPDIRECTINPUTDEVICE8 pDDevice[4];
+ LPDIRECTINPUTEFFECT pDEffect[4][2]; /* for Small & Big Motor */
+ DIJOYSTATE JoyState[4];
+ u16 padStat[2];
+ int padID[2];
+ int padMode1[2];
+ int padMode2[2];
+ int padModeE[2];
+ int padModeC[2];
+ int padModeF[2];
+ int padVib0[2];
+ int padVib1[2];
+ int padVibF[2][4];
+ int padVibC[2];
+ DWORD padPress[2][16];
+ int curPad;
+ int curByte;
+ int curCmd;
+ int cmdLen;
+} global;
+
+static BOOL CALLBACK EnumAxesCallback (LPCDIDEVICEOBJECTINSTANCE lpddoi, LPVOID pvRef)
+{
+ LPDIRECTINPUTDEVICE8 pDDevice = (LPDIRECTINPUTDEVICE8)pvRef;
+ DIPROPRANGE diprg;
+ diprg.diph.dwSize = sizeof (diprg);
+ diprg.diph.dwHeaderSize = sizeof (diprg.diph);
+ diprg.diph.dwObj = lpddoi->dwType;
+ diprg.diph.dwHow = DIPH_BYID;
+ diprg.lMin = -128;
+ diprg.lMax = 127;
+ pDDevice->SetProperty (DIPROP_RANGE, &diprg.diph);
+ return DIENUM_CONTINUE;
+}
+
+static BOOL CALLBACK EnumJoysticksCallback (const DIDEVICEINSTANCE* instance, VOID* pContext)
+{
+ const int devno = global.devcnt;
+ if (devno >= 4)
+ return DIENUM_STOP;
+ HRESULT result = global.pDInput->CreateDevice (instance->guidInstance, &global.pDDevice[devno], NULL);
+ if (FAILED (result))
+ return DIENUM_CONTINUE;
+ global.devcnt++;
+ return DIENUM_CONTINUE;
+}
+
+static bool ReleaseDirectInput (void)
+{
+ int index = 4;
+ while (index--)
+ {
+ if (global.pDEffect[index][0])
+ {
+ global.pDEffect[index][0]->Unload();
+ global.pDEffect[index][0]->Release();
+ global.pDEffect[index][0] = NULL;
+ }
+ if (global.pDEffect[index][1])
+ {
+ global.pDEffect[index][1]->Unload();
+ global.pDEffect[index][1]->Release();
+ global.pDEffect[index][1] = NULL;
+ }
+ if (global.pDDevice[index])
+ {
+ global.pDDevice[index]->Unacquire();
+ global.pDDevice[index]->Release();
+ global.pDDevice[index] = NULL;
+ }
+ }
+ if (global.pDKeyboard)
+ {
+ global.pDKeyboard->Unacquire();
+ global.pDKeyboard->Release();
+ global.pDKeyboard = NULL;
+ }
+ if (global.pDInput)
+ {
+ global.pDInput->Release();
+ global.pDInput = NULL;
+ }
+ global.devcnt = 0;
+ return FALSE;
+}
+
+static bool InitDirectInput (void)
+{
+ if (global.pDInput)
+ return TRUE;
+ HRESULT result = DirectInput8Create (hInstance, DIRECTINPUT_VERSION, IID_IDirectInput8, (void**)&global.pDInput, NULL);
+ if (FAILED (result))
+ return ReleaseDirectInput();
+ result = global.pDInput->CreateDevice (GUID_SysKeyboard, &global.pDKeyboard, NULL);
+ if (FAILED (result))
+ return ReleaseDirectInput();
+ result = global.pDInput->EnumDevices (DI8DEVCLASS_GAMECTRL, EnumJoysticksCallback, NULL, DIEDFL_ATTACHEDONLY);
+ if (FAILED (result))
+ return ReleaseDirectInput();
+ result = global.pDKeyboard->SetDataFormat (&c_dfDIKeyboard);
+ if (FAILED (result))
+ return ReleaseDirectInput();
+ if (hTargetWnd)
+ {
+ global.pDKeyboard->Unacquire();
+ result = global.pDKeyboard->SetCooperativeLevel (hTargetWnd, DISCL_FOREGROUND | DISCL_NONEXCLUSIVE);
+ if (FAILED (result))
+ return ReleaseDirectInput();
+ }
+ int index = global.devcnt;
+ while (index--)
+ {
+ const LPDIRECTINPUTDEVICE8 pDDevice = global.pDDevice[index];
+ result = pDDevice->SetDataFormat (&c_dfDIJoystick);
+ if (FAILED (result))
+ return ReleaseDirectInput();
+ if (hTargetWnd)
+ {
+ pDDevice->Unacquire();
+ result = pDDevice->SetCooperativeLevel (hTargetWnd, DISCL_FOREGROUND | DISCL_EXCLUSIVE);
+ if (FAILED (result))
+ return ReleaseDirectInput();
+ }
+ struct
+ {
+ DIPROPDWORD dipdw;
+ DWORD rgdwAxes[2];
+ LONG rglDirection[2];
+ DIPERIODIC per;
+ DICONSTANTFORCE cf;
+ DIEFFECT eff;
+ } local;
+ memset (&local, 0, sizeof (local));
+ local.dipdw.diph.dwSize = sizeof (DIPROPDWORD);
+ local.dipdw.diph.dwHeaderSize = sizeof (DIPROPHEADER);
+ local.dipdw.diph.dwHow = DIPH_DEVICE;
+ local.dipdw.dwData = DIPROPAUTOCENTER_OFF;
+ pDDevice->SetProperty (DIPROP_AUTOCENTER, &local.dipdw.diph);
+ result = pDDevice->EnumObjects (EnumAxesCallback, pDDevice, DIDFT_AXIS);
+ if (FAILED (result))
+ return ReleaseDirectInput();
+
+ local.rgdwAxes[0] = DIJOFS_X;
+ local.rgdwAxes[1] = DIJOFS_Y;
+ local.eff.dwSize = sizeof (DIEFFECT);
+ local.eff.dwFlags = DIEFF_CARTESIAN | DIEFF_OBJECTOFFSETS;
+ local.eff.dwDuration = INFINITE;
+ local.eff.dwGain = DI_FFNOMINALMAX;
+ local.eff.dwTriggerButton = DIEB_NOTRIGGER;
+ local.eff.cAxes = 2;
+ local.eff.rgdwAxes = local.rgdwAxes;
+ local.eff.rglDirection = local.rglDirection;
+
+ /* Small Motor */
+ local.eff.cbTypeSpecificParams = sizeof (DIPERIODIC);
+ local.eff.lpvTypeSpecificParams = &local.per;
+ result = pDDevice->CreateEffect (GUID_Square , &local.eff, &global.pDEffect[index][0], NULL);
+ if (FAILED (result))
+ global.pDEffect[index][0] = NULL;
+
+ /* Big Motor */
+ local.eff.cbTypeSpecificParams = sizeof (DICONSTANTFORCE);
+ local.eff.lpvTypeSpecificParams = &local.cf;
+ result = pDDevice->CreateEffect (GUID_ConstantForce , &local.eff, &global.pDEffect[index][1], NULL);
+ if (FAILED (result))
+ global.pDEffect[index][1] = NULL;
+ }
+ return TRUE;
+}
+
+static bool AcquireDevice (LPDIRECTINPUTDEVICE8 lpDirectInputDevice)
+{
+ if (FAILED (lpDirectInputDevice->Acquire()))
+ {
+ HRESULT result = lpDirectInputDevice->Acquire();
+ if (result == DIERR_OTHERAPPHASPRIO)
+ return FALSE;
+ if (FAILED (result))
+ return ReleaseDirectInput();
+ }
+ return TRUE;
+}
+
+/* Small Motor */
+static bool SetDeviceForceS (int pad, DWORD force)
+{
+ InitDirectInput();
+ if (global.pDEffect[pad][0])
+ {
+ if ( force == 0) {
+ if (FAILED (global.pDEffect[pad][0]->Stop())) {
+ AcquireDevice (global.pDDevice[pad]);
+ if (FAILED (global.pDEffect[pad][0]->Stop()))
+ return ReleaseDirectInput();
+ }
+ return TRUE;
+ }
+ LONG rglDirection[2] = { 0, 0 };
+ DIPERIODIC per;
+ rglDirection[0] = force;
+ rglDirection[1] = force;
+ per.dwMagnitude = force;
+ per.dwPeriod = (DWORD) (0.01 * DI_SECONDS);
+ per.lOffset = 0;
+ per.dwPhase = 0;
+ DIEFFECT eff;
+ eff.dwSize = sizeof (DIEFFECT);
+ eff.dwFlags = DIEFF_CARTESIAN | DIEFF_OBJECTOFFSETS;
+ eff.cAxes = 2;
+ eff.rglDirection = rglDirection;
+ eff.lpEnvelope = 0;
+ eff.cbTypeSpecificParams = sizeof (DIPERIODIC);
+ eff.lpvTypeSpecificParams = &per;
+ if (FAILED (global.pDEffect[pad][0]->SetParameters (&eff, DIEP_DIRECTION | DIEP_TYPESPECIFICPARAMS | DIEP_START)))
+ return ReleaseDirectInput();
+ if (FAILED (global.pDEffect[pad][0]->Start (1, 0)))
+ {
+ AcquireDevice (global.pDDevice[pad]);
+ if (FAILED (global.pDEffect[pad][0]->Start (1, 0)))
+ return ReleaseDirectInput();
+ }
+ }
+ return TRUE;
+}
+
+/* Big Motor */
+static bool SetDeviceForceB (int pad, DWORD force)
+{
+ InitDirectInput();
+ if (global.pDEffect[pad][1])
+ {
+ if ( force == 0) {
+ if (FAILED (global.pDEffect[pad][1]->Stop())) {
+ AcquireDevice (global.pDDevice[pad]);
+ if (FAILED (global.pDEffect[pad][1]->Stop()))
+ return ReleaseDirectInput();
+ }
+ return TRUE;
+ }
+ LONG rglDirection[2] = { 0, 0 };
+ DICONSTANTFORCE cf;
+ rglDirection[0] = force;
+ rglDirection[1] = force;
+ cf.lMagnitude = force;
+ DIEFFECT eff;
+ eff.dwSize = sizeof (DIEFFECT);
+ eff.dwFlags = DIEFF_CARTESIAN | DIEFF_OBJECTOFFSETS;
+ eff.cAxes = 2;
+ eff.rglDirection = rglDirection;
+ eff.lpEnvelope = 0;
+ eff.cbTypeSpecificParams = sizeof (DICONSTANTFORCE);
+ eff.lpvTypeSpecificParams = &cf;
+ if (FAILED (global.pDEffect[pad][1]->SetParameters (&eff, DIEP_DIRECTION | DIEP_TYPESPECIFICPARAMS | DIEP_START)))
+ return ReleaseDirectInput();
+ if (FAILED (global.pDEffect[pad][1]->Start (1, 0)))
+ {
+ AcquireDevice (global.pDDevice[pad]);
+ if (FAILED (global.pDEffect[pad][1]->Start (1, 0)))
+ return ReleaseDirectInput();
+ }
+ }
+ return TRUE;
+}
+
+static bool GetJoyState (const int devno)
+{
+ InitDirectInput();
+ if (global.pDDevice[devno] == NULL)
+ return FALSE;
+ global.pDDevice[devno]->Poll();
+ if (FAILED (global.pDDevice[devno]->GetDeviceState (sizeof (DIJOYSTATE), &global.JoyState[devno])))
+ {
+ AcquireDevice (global.pDDevice[devno]);
+ return FALSE;
+ }
+ return TRUE;
+}
+
+static bool GetKeyState (u8* keyboard)
+{
+ InitDirectInput();
+ if (global.pDKeyboard == NULL)
+ return FALSE;
+ global.pDKeyboard->Poll();
+ if (FAILED (global.pDKeyboard->GetDeviceState (256, keyboard)))
+ {
+ AcquireDevice (global.pDKeyboard);
+ return FALSE;
+ }
+ return TRUE;
+}
+
+static void SetDefaultConfig (void)
+{
+ memset (&global.config, 0, sizeof(global.config));
+
+ global.config.keys[0][0] = 0x2E;
+ global.config.keys[0][3] = 0x2F;
+ global.config.keys[0][4] = 0xC8;
+ global.config.keys[0][5] = 0xCD;
+ global.config.keys[0][6] = 0xD0;
+ global.config.keys[0][7] = 0xCB;
+ global.config.keys[0][8] = 0x12;
+ global.config.keys[0][9] = 0x14;
+ global.config.keys[0][10] = 0x11;
+ global.config.keys[0][11] = 0x13;
+ global.config.keys[0][12] = 0x20;
+ global.config.keys[0][13] = 0x2D;
+ global.config.keys[0][14] = 0x2C;
+ global.config.keys[0][15] = 0x1F;
+
+ global.config.dualshock = FALSE;
+}
+
+static void SaveConfig (void)
+{
+ HKEY myKey;
+ DWORD myDisp;
+
+ RegCreateKeyEx(HKEY_CURRENT_USER, "Software\\Vision Thing\\PSEmu Pro\\PAD\\PadSSSPSX", 0, NULL,
+ REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &myKey, &myDisp);
+
+ RegSetValueEx(myKey, "cfg", 0, REG_BINARY, (CONST BYTE *)&global.config, sizeof(global.config));
+
+ RegCloseKey(myKey);
+}
+
+static void LoadConfig (void)
+{
+ HKEY myKey;
+ DWORD type, size;
+
+ SetDefaultConfig ();
+
+ if (RegOpenKeyEx (HKEY_CURRENT_USER, "Software\\Vision Thing\\PSEmu Pro\\PAD\\PadSSSPSX", 0,
+ KEY_ALL_ACCESS, &myKey) == ERROR_SUCCESS)
+ {
+ size = sizeof(global.config);
+ RegQueryValueEx (myKey, "cfg", NULL, &type, (LPBYTE)&global.config, &size);
+ RegCloseKey (myKey);
+ }
+
+ global.padVibC[0] = global.padVibC[1] = -1;
+ for (int cnt = 21; cnt--; )
+ {
+ const int key0 = global.config.keys[0][cnt];
+ if (key0 >= 0x1000)
+ global.padVibC[0] = (key0 & 0xfff) / 0x100;
+ const int key1 = global.config.keys[1][cnt];
+ if (key1 >= 0x1000)
+ global.padVibC[1] = (key1 & 0xfff) / 0x100;
+ }
+}
+
+static void PADsetMode (const int pad, const int mode)
+{
+ static const u8 padID[] = { 0x41, 0x73, 0x41, 0x79 };
+ global.padMode1[pad] = mode;
+ global.padVib0[pad] = 0;
+ global.padVib1[pad] = 0;
+ global.padVibF[pad][0] = 0;
+ global.padVibF[pad][1] = 0;
+ global.padID[pad] = padID[global.padMode2[pad] * 2 + mode];
+}
+
+static void KeyPress (const int pad, const int index, const bool press)
+{
+ if (index < 16)
+ {
+ if (press)
+ {
+ global.padStat[pad] &= ~(1 << index);
+ if (global.padPress[pad][index] == 0)
+ global.padPress[pad][index] = GetTickCount();
+ }
+ else
+ {
+ global.padStat[pad] |= 1 << index;
+ global.padPress[pad][index] = 0;
+ }
+ }
+ else if (global.config.dualshock)
+ {
+ static bool prev[2] = { FALSE, FALSE };
+ if ((prev[pad] != press) && (global.padModeF[pad] == 0))
+ {
+ prev[pad] = press;
+ if (press) PADsetMode (pad, !global.padMode1[pad]);
+ }
+ }
+}
+
+static void UpdateState (const int pad)
+{
+ static int flag_keyboard;
+ static int flag_joypad[4];
+ if (pad == 0)
+ {
+ flag_keyboard = 0;
+ flag_joypad[0] = 0;
+ flag_joypad[1] = 0;
+ flag_joypad[2] = 0;
+ flag_joypad[3] = 0;
+ }
+ static u8 keystate[256];
+ for (int index = 17; index--; )
+ {
+ const int key = global.config.keys[pad][index];
+ if (key == 0)
+ continue;
+ else if (key < 0x100)
+ {
+ if (flag_keyboard == FALSE)
+ {
+ flag_keyboard = TRUE;
+ if (GetKeyState (keystate) == FALSE)
+ return;
+ }
+ KeyPress (pad, index, keystate[key] & 0x80);
+ }
+ else
+ {
+ const int joypad = ((key & 0xfff) / 100);
+ if (flag_joypad[joypad] == FALSE)
+ {
+ flag_joypad[joypad] = TRUE;
+ if (GetJoyState (joypad) == FALSE)
+ return;
+ }
+ if (key < 0x2000)
+ {
+ KeyPress (pad, index, global.JoyState[joypad].rgbButtons[key & 0xff]);
+ }
+ else if (key < 0x3000)
+ {
+ const int state = ((int*)&global.JoyState[joypad].lX)[(key & 0xff) /2];
+ switch (key & 1)
+ {
+ case 0: KeyPress (pad, index, state < -64); break;
+ case 1: KeyPress (pad, index, state >= 64); break;
+ }
+ }
+ else
+ {
+ const u32 state = global.JoyState[joypad].rgdwPOV[(key & 0xff) /4];
+ switch (key & 3)
+ {
+ case 0: KeyPress (pad, index, (state >= 0 && state <= 4500) || (state >= 31500 && state <= 36000)); break;
+ case 1: KeyPress (pad, index, state >= 4500 && state <= 13500); break;
+ case 2: KeyPress (pad, index, state >= 13500 && state <= 22500); break;
+ case 3: KeyPress (pad, index, state >= 22500 && state <= 31500); break;
+ }
+ }
+ }
+ }
+
+ /* Small Motor */
+ const int vib0 = global.padVibF[pad][0] ? 10000 : 0;
+ if ((global.padVibF[pad][2] != vib0) && (global.padVibC[pad] >= 0))
+ {
+ global.padVibF[pad][2] = vib0;
+ SetDeviceForceS (global.padVibC[pad], vib0);
+ }
+ /* Big Motor */
+ const int vib1 = global.padVibF[pad][1] ? 500 + 37*global.padVibF[pad][1] : 0;
+ if ((global.padVibF[pad][3] != vib1) && (global.padVibC[pad] >= 0))
+ {
+ global.padVibF[pad][3] = vib1;
+ SetDeviceForceB (global.padVibC[pad], vib1);
+ }
+}
+
+static void set_label (const HWND hWnd, const int pad, const int index)
+{
+ const int key = global.config.keys[pad][index];
+ char buff[64];
+ if (key < 0x100)
+ {
+ if (key == 0)
+ strcpy (buff, "NONE");
+ else if (GetKeyNameText (key << 16, buff, sizeof (buff)) == 0)
+ wsprintf (buff, "Keyboard 0x%02X", key);
+ }
+ else if (key >= 0x1000 && key < 0x2000)
+ {
+ wsprintf (buff, "J%d_%d", (key & 0xfff) / 0x100, (key & 0xff) + 1);
+ }
+ else if (key >= 0x2000 && key < 0x3000)
+ {
+ static const char name[][4] = { "MIN", "MAX" };
+ const int axis = (key & 0xff);
+ wsprintf (buff, "J%d_AXIS%d_%s", (key & 0xfff) / 0x100, axis / 2, name[axis % 2]);
+ if (index >= 17 && index <= 20)
+ buff[strlen (buff) -4] = '\0';
+ }
+ else if (key >= 0x3000 && key < 0x4000)
+ {
+ static const char name[][7] = { "FOWARD", "RIGHT", "BACK", "LEFT" };
+ const int pov = (key & 0xff);
+ wsprintf (buff, "J%d_POV%d_%s", (key & 0xfff) / 0x100, pov /4, name[pov % 4]);
+ }
+ Button_SetText (GetDlgItem (hWnd, IDC_ESELECT + index), buff);
+}
+
+static BOOL CALLBACK ConfigureDlgProc (const HWND hWnd, const UINT msg, const WPARAM wParam, const LPARAM lParam)
+{
+ static BYTE keymaps[2][256];
+ static DWORD countdown;
+ static int disabled;
+ static HWND hTabWnd;
+ static int pad;
+ int cnt1;
+ int cnt2;
+ int key;
+ switch (msg)
+ {
+ case WM_INITDIALOG:
+ hTargetWnd = hWnd;
+ pad = disabled = 0;
+ LoadConfig();
+ for (cnt1 = 21; cnt1--; )
+ set_label (hWnd, pad, cnt1);
+ hTabWnd = GetDlgItem (hWnd, IDC_TABC);
+ TCITEM tcI;
+ tcI.mask = TCIF_TEXT;
+ tcI.pszText = "PAD1";
+ TabCtrl_InsertItem (hTabWnd, 0, &tcI);
+ tcI.mask = TCIF_TEXT;
+ tcI.pszText = "PAD2";
+ TabCtrl_InsertItem (hTabWnd, 1, &tcI);
+ CheckDlgButton(hWnd, IDC_DS2, global.config.dualshock);
+ EnableWindow(GetDlgItem(hWnd, IDC_BMODE), global.config.dualshock);
+ EnableWindow(GetDlgItem(hWnd, IDC_BLAX), global.config.dualshock);
+ EnableWindow(GetDlgItem(hWnd, IDC_BLAY), global.config.dualshock);
+ EnableWindow(GetDlgItem(hWnd, IDC_BRAX), global.config.dualshock);
+ EnableWindow(GetDlgItem(hWnd, IDC_BRAY), global.config.dualshock);
+ EnableWindow(GetDlgItem(hWnd, IDC_BL3), global.config.dualshock);
+ EnableWindow(GetDlgItem(hWnd, IDC_BR3), global.config.dualshock);
+ EnableWindow(GetDlgItem(hWnd, IDC_EMODE), global.config.dualshock);
+ EnableWindow(GetDlgItem(hWnd, IDC_ELAX), global.config.dualshock);
+ EnableWindow(GetDlgItem(hWnd, IDC_ELAY), global.config.dualshock);
+ EnableWindow(GetDlgItem(hWnd, IDC_ERAX), global.config.dualshock);
+ EnableWindow(GetDlgItem(hWnd, IDC_ERAY), global.config.dualshock);
+ EnableWindow(GetDlgItem(hWnd, IDC_EL3), global.config.dualshock);
+ EnableWindow(GetDlgItem(hWnd, IDC_ER3), global.config.dualshock);
+ SetTimer (hWnd, 0x80, 50, NULL);
+ return TRUE;
+ case WM_DESTROY:
+ break;
+ case WM_NOTIFY:
+ if (wParam == IDC_TABC)
+ {
+ if (disabled)
+ EnableWindow (GetDlgItem (hWnd, disabled), TRUE);
+ disabled = 0;
+ pad = TabCtrl_GetCurSel (hTabWnd);
+ for (cnt1 = 21; cnt1--; )
+ set_label (hWnd, pad, cnt1);
+ }
+ break;
+ case WM_COMMAND:
+ for (cnt1 = 21; cnt1--; )
+ {
+ if (LOWORD (wParam) == IDC_BSELECT + cnt1)
+ {
+ if (disabled)
+ EnableWindow (GetDlgItem (hWnd, disabled), TRUE);
+ EnableWindow (GetDlgItem (hWnd, disabled = wParam), FALSE);
+ EnableWindow (GetDlgItem (hWnd, IDC_DS2), FALSE);
+ countdown = GetTickCount();
+ GetKeyState (keymaps[0]);
+ return TRUE;
+ }
+ }
+ if (LOWORD (wParam) == IDOK)
+ EndDialog (hWnd, IDOK);
+ else if (LOWORD (wParam) == IDCANCEL)
+ EndDialog (hWnd, IDCANCEL);
+ else if (LOWORD (wParam) == IDC_DS2)
+ {
+ global.config.dualshock = IsDlgButtonChecked(hWnd, IDC_DS2);
+
+ EnableWindow(GetDlgItem(hWnd, IDC_BMODE), global.config.dualshock);
+ EnableWindow(GetDlgItem(hWnd, IDC_BLAX), global.config.dualshock);
+ EnableWindow(GetDlgItem(hWnd, IDC_BLAY), global.config.dualshock);
+ EnableWindow(GetDlgItem(hWnd, IDC_BRAX), global.config.dualshock);
+ EnableWindow(GetDlgItem(hWnd, IDC_BRAY), global.config.dualshock);
+ EnableWindow(GetDlgItem(hWnd, IDC_BL3), global.config.dualshock);
+ EnableWindow(GetDlgItem(hWnd, IDC_BR3), global.config.dualshock);
+ EnableWindow(GetDlgItem(hWnd, IDC_EMODE), global.config.dualshock);
+ EnableWindow(GetDlgItem(hWnd, IDC_ELAX), global.config.dualshock);
+ EnableWindow(GetDlgItem(hWnd, IDC_ELAY), global.config.dualshock);
+ EnableWindow(GetDlgItem(hWnd, IDC_ERAX), global.config.dualshock);
+ EnableWindow(GetDlgItem(hWnd, IDC_ERAY), global.config.dualshock);
+ EnableWindow(GetDlgItem(hWnd, IDC_EL3), global.config.dualshock);
+ EnableWindow(GetDlgItem(hWnd, IDC_ER3), global.config.dualshock);
+ }
+ break;
+ case WM_TIMER:
+ if (disabled)
+ {
+ const int index = disabled - IDC_BSELECT;
+ int analog = FALSE;
+ if ((GetTickCount() - countdown) / 1000 != 10)
+ {
+ char buff[64];
+ wsprintf (buff, "Timeout: %d", 10 - (GetTickCount() - countdown) / 1000);
+ SetWindowText (GetDlgItem (hWnd, IDC_ESELECT + index), buff);
+ }
+ else
+ {
+ global.config.keys[pad][index] = 0;
+ set_label (hWnd, pad, index);
+ EnableWindow (GetDlgItem (hWnd, disabled), TRUE);
+ EnableWindow (GetDlgItem (hWnd, IDC_DS2), TRUE);
+ disabled = 0;
+ break;
+ }
+ if (GetKeyState (keymaps[1]) == FALSE)
+ break;
+ for (key = 0x100; key--; )
+ {
+ if (~keymaps[0][key] & keymaps[1][key] & 0x80)
+ break;
+ }
+ for (cnt1 = global.devcnt; cnt1--;)
+ {
+ if (GetJoyState (cnt1) == FALSE)
+ break;
+
+ for (cnt2 = 32; cnt2--; )
+ {
+ if (global.JoyState[cnt1].rgbButtons[cnt2])
+ key = 0x1000 + 0x100 * cnt1 + cnt2;
+ }
+ for (cnt2 = 8; cnt2--; )
+ {
+ const int now = ((u32*)&global.JoyState[cnt1].lX)[cnt2];
+ if (now < -64)
+ {
+ key = 0x2000 + 0x100 * cnt1 + cnt2 * 2 +0;
+ analog = TRUE;
+ }
+ else if (now >= 64)
+ {
+ key = 0x2000 + 0x100 * cnt1 + cnt2 * 2 +1;
+ analog = TRUE;
+ }
+ }
+ for (cnt2 = 4; cnt2--; )
+ {
+ const u32 now = global.JoyState[cnt1].rgdwPOV[cnt2];
+ if ((now >= 0 && now < 4500) || (now >= 31500 && now < 36000))
+ key = 0x3000 + 0x100 * cnt1 + cnt2 * 4 +0;
+ if (now >= 4500 && now < 13500)
+ key = 0x3000 + 0x100 * cnt1 + cnt2 * 4 +1;
+ if (now >= 13500 && now < 22500)
+ key = 0x3000 + 0x100 * cnt1 + cnt2 * 4 +2;
+ if (now >= 22500 && now < 31500)
+ key = 0x3000 + 0x100 * cnt1 + cnt2 * 4 +3;
+ }
+ }
+ if (index >= 17 && index <= 20 && analog == 0)
+ key = 0;
+ else if (key > 0)
+ {
+ if (key != 1)
+ global.config.keys[pad][index] = key;
+ set_label (hWnd, pad, index);
+ EnableWindow (GetDlgItem (hWnd, disabled), TRUE);
+ EnableWindow (GetDlgItem (hWnd, IDC_DS2), TRUE);
+ disabled = 0;
+ }
+ }
+ }
+ return FALSE;
+}
+
+u32 CALLBACK PS2EgetLibType (void)
+{
+ return 0x02;
+}
+
+const char* CALLBACK PS2EgetLibName (void)
+{
+ return LibraryName;
+}
+
+u32 CALLBACK PS2EgetLibVersion2 (u32 type)
+{
+ return (version << 16) | (revision << 8) | build;
+}
+
+u32 CALLBACK PSEgetLibType (void)
+{
+ return 8;
+}
+
+const char* CALLBACK PSEgetLibName (void)
+{
+ return LibraryName;
+}
+
+u32 CALLBACK PSEgetLibVersion (void)
+{
+ return (version << 16) | (revision << 8) | build;
+}
+
+s32 CALLBACK PADinit (u32 flags)
+{
+ return 0;
+}
+
+void CALLBACK PADshutdown (void)
+{
+}
+
+static int n_open = 0;
+s32 CALLBACK PADopen (HWND hWnd)
+{
+ if (!IsWindow (hWnd) && !IsBadReadPtr ((u32*)hWnd, 4))
+ hWnd = *(HWND*)hWnd;
+ if (!IsWindow (hWnd))
+ hWnd = NULL;
+ else
+ {
+ while (GetWindowLong (hWnd, GWL_STYLE) & WS_CHILD)
+ hWnd = GetParent (hWnd);
+ }
+ hTargetWnd = hWnd;
+ if (n_open++ == FALSE)
+ {
+ memset (&global, 0, sizeof (global));
+ global.padStat[0] = 0xffff;
+ global.padStat[1] = 0xffff;
+ LoadConfig();
+ PADsetMode (0, 0);
+ PADsetMode (1, 0);
+ }
+ return 0;
+}
+
+void CALLBACK PADclose (void)
+{
+ if (--n_open == 0)
+ ReleaseDirectInput();
+}
+
+u32 CALLBACK PADquery (void)
+{
+ return 3;
+}
+
+u8 CALLBACK PADstartPoll (int pad)
+{
+ global.curPad = pad -1;
+ global.curByte = 0;
+ return 0xff;
+}
+
+static const u8 cmd40[8] =
+{
+ 0xff, 0x5a, 0x00, 0x00, 0x02, 0x00, 0x00, 0x5a
+};
+static const u8 cmd41[8] =
+{
+ 0xff, 0x5a, 0xff, 0xff, 0x03, 0x00, 0x00, 0x5a,
+};
+static const u8 cmd44[8] =
+{
+ 0xff, 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+};
+static const u8 cmd45[8] =
+{
+ 0xff, 0x5a, 0x03, 0x02, 0x01, 0x02, 0x01, 0x00,
+};
+static const u8 cmd46[8] =
+{
+ 0xff, 0x5a, 0x00, 0x00, 0x01, 0x02, 0x00, 0x0a,
+};
+static const u8 cmd47[8] =
+{
+ 0xff, 0x5a, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00,
+};
+static const u8 cmd4c[8] =
+{
+ 0xff, 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+};
+static const u8 cmd4d[8] =
+{
+ 0xff, 0x5a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+};
+static const u8 cmd4f[8] =
+{
+ 0xff, 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5a,
+};
+
+static u8 get_analog (const int key)
+{
+ const int pad = ((key & 0xf00) / 0x100);
+ const int pos = ((key & 0x0ff) /2);
+// return (u8)(((int*)&global.JoyState[pad].lX)[pos] + 128);
+ u8 r = (u8)(((int*)&global.JoyState[pad].lX)[pos] + 128);
+ if (r == 128) r = 127; // FIXME: ???
+ return r;
+}
+
+static u8 get_pressure (const DWORD now, const DWORD press)
+{
+ /*if (press == 0)
+ return 0;
+ return (u8)((now - press > 2550) ? 255 : (now - press) / 10);*/
+ return 255;
+}
+
+u8 CALLBACK PADpoll (u8 value)
+{
+ const int pad = global.curPad;
+ const int cur = global.curByte;
+ static u8 buf[20];
+
+ if (!global.config.dualshock)
+ {
+ value = 0x42;
+ }
+
+ if (cur == 0)
+ {
+ global.curByte++;
+ global.curCmd = value;
+ switch (value)
+ {
+ case 0x40:
+ global.cmdLen = sizeof (cmd40);
+ memcpy (buf, cmd40, sizeof (cmd40));
+ return 0xf3;
+ case 0x41:
+ global.cmdLen = sizeof (cmd41);
+ memcpy (buf, cmd41, sizeof (cmd41));
+ return 0xf3;
+ case 0x42:
+ case 0x43:
+ if (value == 0x42) UpdateState (pad);
+ global.cmdLen = 2 + 2 * (global.padID[pad] & 0x0f);
+ buf[1] = global.padModeC[pad] ? 0x00 : 0x5a;
+ *(u16*)&buf[2] = global.padStat[pad];
+ if (value == 0x43 && global.padModeE[pad])
+ {
+ buf[4] = 0;
+ buf[5] = 0;
+ buf[6] = 0;
+ buf[7] = 0;
+ return 0xf3;
+ }
+ else
+ {
+ buf[ 4] = get_analog (global.config.keys[pad][19]);
+ buf[ 5] = get_analog (global.config.keys[pad][20]);
+ buf[ 6] = get_analog (global.config.keys[pad][17]);
+ buf[ 7] = get_analog (global.config.keys[pad][18]);
+
+ if (global.padID[pad] == 0x79)
+ {
+ const DWORD now = GetTickCount();
+ buf[ 8] = get_pressure (now, global.padPress[pad][2]);
+ buf[ 9] = get_pressure (now, global.padPress[pad][0]);
+ buf[10] = get_pressure (now, global.padPress[pad][3]);
+ buf[11] = get_pressure (now, global.padPress[pad][1]);
+ buf[12] = get_pressure (now, global.padPress[pad][11]);
+ buf[13] = get_pressure (now, global.padPress[pad][10]);
+ buf[14] = get_pressure (now, global.padPress[pad][9]);
+ buf[15] = get_pressure (now, global.padPress[pad][8]);
+ buf[16] = get_pressure (now, global.padPress[pad][13]);
+ buf[17] = get_pressure (now, global.padPress[pad][12]);
+ buf[18] = get_pressure (now, global.padPress[pad][15]);
+ buf[19] = get_pressure (now, global.padPress[pad][14]);
+ }
+ return (u8)global.padID[pad];
+ }
+ break;
+ case 0x44:
+ global.cmdLen = sizeof (cmd44);
+ memcpy (buf, cmd44, sizeof (cmd44));
+ return 0xf3;
+ case 0x45:
+ global.cmdLen = sizeof (cmd45);
+ memcpy (buf, cmd45, sizeof (cmd45));
+ buf[4] = (u8)global.padMode1[pad];
+ return 0xf3;
+ case 0x46:
+ global.cmdLen = sizeof (cmd46);
+ memcpy (buf, cmd46, sizeof (cmd46));
+ return 0xf3;
+ case 0x47:
+ global.cmdLen = sizeof (cmd47);
+ memcpy (buf, cmd47, sizeof (cmd47));
+ return 0xf3;
+ case 0x4c:
+ global.cmdLen = sizeof (cmd4c);
+ memcpy (buf, cmd4c, sizeof (cmd4c));
+ return 0xf3;
+ case 0x4d:
+ global.cmdLen = sizeof (cmd4d);
+ memcpy (buf, cmd4d, sizeof (cmd4d));
+ return 0xf3;
+ case 0x4f:
+ global.padID[pad] = 0x79;
+ global.padMode2[pad] = 1;
+ global.cmdLen = sizeof (cmd4f);
+ memcpy (buf, cmd4f, sizeof (cmd4f));
+ return 0xf3;
+ }
+ }
+ switch (global.curCmd)
+ {
+ case 0x42:
+ if (global.config.dualshock)
+ {
+ if (cur == global.padVib0[pad])
+ {
+ global.padVibF[pad][0] = value;
+
+ if (gpuVisualVibration != NULL && (global.padVibF[pad][0] || global.padVibF[pad][1]))
+ gpuVisualVibration(global.padVibF[pad][0], global.padVibF[pad][1]);
+ }
+
+ if (cur == global.padVib1[pad])
+ {
+ global.padVibF[pad][1] = value;
+
+ if (gpuVisualVibration != NULL && (global.padVibF[pad][0] || global.padVibF[pad][1]))
+ gpuVisualVibration(global.padVibF[pad][0], global.padVibF[pad][1]);
+ }
+ }
+ break;
+ case 0x43:
+ if (cur == 2)
+ {
+ global.padModeE[pad] = value;
+ global.padModeC[pad] = 0;
+ }
+ break;
+ case 0x44:
+ if (cur == 2)
+ PADsetMode (pad, value);
+ if (cur == 3)
+ global.padModeF[pad] = (value == 3);
+ break;
+ case 0x46:
+ if (cur == 2)
+ {
+ switch(value)
+ {
+ case 0:
+ buf[5] = 0x02;
+ buf[6] = 0x00;
+ buf[7] = 0x0A;
+ break;
+ case 1:
+ buf[5] = 0x01;
+ buf[6] = 0x01;
+ buf[7] = 0x14;
+ break;
+ }
+ }
+ break;
+ case 0x4c:
+ if (cur == 2)
+ {
+ static const u8 buf5[] = { 0x04, 0x07, 0x02, 0x05 };
+ buf[5] = buf5[value & 3];
+ }
+ break;
+ case 0x4d:
+ if (cur >= 2)
+ {
+ if (cur == global.padVib0[pad])
+ buf[cur] = 0x00;
+ if (cur == global.padVib1[pad])
+ buf[cur] = 0x01;
+ if (value == 0x00)
+ {
+ global.padVib0[pad] = cur;
+ if ((global.padID[pad] & 0x0f) < (cur - 1) / 2)
+ global.padID[pad] = (global.padID[pad] & 0xf0) + (cur - 1) / 2;
+ }
+ else if (value == 0x01)
+ {
+ global.padVib1[pad] = cur;
+ if ((global.padID[pad] & 0x0f) < (cur - 1) / 2)
+ global.padID[pad] = (global.padID[pad] & 0xf0) + (cur - 1) / 2;
+ }
+ }
+ break;
+ }
+ if (cur >= global.cmdLen)
+ return 0;
+ return buf[global.curByte++];
+}
+
+typedef struct
+{
+ unsigned char controllerType;
+ unsigned short buttonStatus;
+ unsigned char rightJoyX, rightJoyY, leftJoyX, leftJoyY;
+ unsigned char moveX, moveY;
+ unsigned char reserved[91];
+} PadDataS;
+
+long PADreadPort1 (PadDataS* pads)
+{
+ memset (pads, 0, sizeof (PadDataS));
+ if ((global.padID[0] & 0xf0) == 0x40)
+ pads->controllerType = 4;
+ else
+ pads->controllerType = 7;
+ pads->buttonStatus = global.padStat[0];
+ pads->leftJoyX = get_analog (global.config.keys[0][17]);
+ pads->leftJoyY = get_analog (global.config.keys[0][18]);
+ pads->rightJoyX = get_analog (global.config.keys[0][19]);
+ pads->rightJoyY = get_analog (global.config.keys[0][20]);
+ pads->moveX = 0;
+ pads->moveY = 0;
+ return 0;
+}
+
+long PADreadPort2 (PadDataS* pads)
+{
+ memset (pads, 0, sizeof (PadDataS));
+ if ((global.padID[1] & 0xf0) == 0x40)
+ pads->controllerType = 4;
+ else
+ pads->controllerType = 7;
+ pads->buttonStatus = global.padStat[1];
+ pads->leftJoyX = get_analog (global.config.keys[1][17]);
+ pads->leftJoyY = get_analog (global.config.keys[1][18]);
+ pads->rightJoyX = get_analog (global.config.keys[1][19]);
+ pads->rightJoyY = get_analog (global.config.keys[1][20]);
+ pads->moveX = 0;
+ pads->moveY = 0;
+ return 0;
+}
+
+keyEvent* CALLBACK PADkeyEvent (void)
+{
+ static keyEvent ev;
+ static u8 state[2][256];
+ if (n_open)
+ {
+ memcpy (state[0], state[1], sizeof (state[0]));
+ GetKeyState (state[1]);
+ for (int cnt = 0; cnt < 256; cnt++)
+ {
+ if (~state[0][cnt] & state[1][cnt] & 0x80)
+ {
+ ev.event = (state[1][cnt] & 0x80) ? 1 : 2;
+ ev.key = MapVirtualKey (cnt, 1);
+ return &ev;
+ }
+ }
+ }
+ return NULL;
+}
+
+void CALLBACK PADconfigure (void)
+{
+ if (n_open == 0)
+ {
+ memset (&global, 0, sizeof (global));
+ if (DialogBox (hInstance, MAKEINTRESOURCE (IDD_DIALOG1), GetActiveWindow(), (DLGPROC)ConfigureDlgProc) == IDOK)
+ SaveConfig();
+ ReleaseDirectInput();
+ }
+}
+
+void CALLBACK PADabout (void)
+{
+ MessageBox (0, "Copyright (C) 2004-2005 Nagisa", "SSSPSX PAD plugin", 0);
+}
+
+s32 CALLBACK PADtest (void)
+{
+ return 0;
+}
+
+void CALLBACK PADregisterVibration(void (CALLBACK *callback)(unsigned long, unsigned long)) {
+ gpuVisualVibration = callback;
+}
+
+//#ifdef _WIN64
+BOOL APIENTRY DllMain(HMODULE hInst, DWORD dwReason, LPVOID lpReserved)
+{
+ hInstance = hInst;
+ return TRUE;
+}
+//#else
+BOOL APIENTRY EntryPoint (HMODULE hInst, DWORD dwReason, LPVOID lpReserved)
+{
+ hInstance = hInst;
+ return TRUE;
+}
+//#endif
diff --git a/win32/plugins/PadSSSPSX/PadSSSPSX.def b/win32/plugins/PadSSSPSX/PadSSSPSX.def
new file mode 100644
index 00000000..dd5e4ed2
--- /dev/null
+++ b/win32/plugins/PadSSSPSX/PadSSSPSX.def
@@ -0,0 +1,23 @@
+LIBRARY "PadSSSPSX"
+
+EXPORTS
+ PSEgetLibType @1
+ PSEgetLibName @2
+ PSEgetLibVersion @3
+ PS2EgetLibType @4
+ PS2EgetLibName @5
+ PS2EgetLibVersion2 @6
+ PADinit @7
+ PADshutdown @8
+ PADopen @9
+ PADclose @10
+ PADkeyEvent @11
+ PADstartPoll @12
+ PADpoll @13
+ PADreadPort1 @14
+ PADreadPort2 @15
+ PADquery @16
+ PADconfigure @17
+ PADtest @18
+ PADabout @19
+ PADregisterVibration @20 \ No newline at end of file
diff --git a/win32/plugins/PadSSSPSX/PadSSSPSX.dsp b/win32/plugins/PadSSSPSX/PadSSSPSX.dsp
new file mode 100644
index 00000000..b550a060
--- /dev/null
+++ b/win32/plugins/PadSSSPSX/PadSSSPSX.dsp
@@ -0,0 +1,123 @@
+# Microsoft Developer Studio Project File - Name="SSSPSXpad" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
+
+CFG=SSSPSXpad - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "PadSSSPSX.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "PadSSSPSX.mak" CFG="SSSPSXpad - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "SSSPSXpad - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "SSSPSXpad - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+MTL=midl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "SSSPSXpad - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "SSSPSXPAD_EXPORTS" /YX /FD /c
+# ADD CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "SSSPSXPAD_EXPORTS" /YX /FD /c
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x804 /d "NDEBUG"
+# ADD RSC /l 0x804 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib dinput8.lib dxguid.lib /nologo /dll /machine:I386
+
+!ELSEIF "$(CFG)" == "SSSPSXpad - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "Debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "SSSPSXPAD_EXPORTS" /YX /FD /GZ /c
+# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "SSSPSXPAD_EXPORTS" /YX /FD /GZ /c
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x804 /d "_DEBUG"
+# ADD RSC /l 0x804 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib dinput8.lib dxguid.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
+
+!ENDIF
+
+# Begin Target
+
+# Name "SSSPSXpad - Win32 Release"
+# Name "SSSPSXpad - Win32 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=.\PadSSSPSX.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\PadSSSPSX.def
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE=.\PadSSSPSX.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\PadSSSPSXres.h
+# End Source File
+# End Group
+# Begin Group "Resource Files"
+
+# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
+# Begin Source File
+
+SOURCE=.\PadSSSPSX.rc
+# End Source File
+# End Group
+# End Target
+# End Project
diff --git a/win32/plugins/PadSSSPSX/PadSSSPSX.h b/win32/plugins/PadSSSPSX/PadSSSPSX.h
new file mode 100644
index 00000000..b985e71a
--- /dev/null
+++ b/win32/plugins/PadSSSPSX/PadSSSPSX.h
@@ -0,0 +1,46 @@
+/* PADwin
+ * Copyright (C) 2002-2004 PADwin 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#ifndef __PAD_H__
+#define __PAD_H__
+
+#include "PadSSSPSXres.h"
+
+typedef signed char s8;
+typedef signed short s16;
+typedef signed int s32;
+typedef __int64 s64;
+
+typedef unsigned char u8;
+typedef unsigned short u16;
+typedef unsigned int u32;
+typedef unsigned __int64 u64;
+
+typedef struct
+{
+ u32 key;
+ u32 event;
+} keyEvent;
+
+typedef struct
+{
+ u32 keys[2][21];
+ u32 dualshock;
+} Config;
+
+#endif
diff --git a/win32/plugins/PadSSSPSX/PadSSSPSX.rc b/win32/plugins/PadSSSPSX/PadSSSPSX.rc
new file mode 100644
index 00000000..ea32139a
--- /dev/null
+++ b/win32/plugins/PadSSSPSX/PadSSSPSX.rc
@@ -0,0 +1,120 @@
+#include "PadSSSPSXres.h"
+
+#define APSTUDIO_READONLY_SYMBOLS
+
+#include "afxres.h"
+
+#undef APSTUDIO_READONLY_SYMBOLS
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_JPN)
+#ifdef _WIN32
+//LANGUAGE LANG_JAPANESE, SUBLANG_DEFAULT
+//#pragma code_page(932)
+#endif //_WIN32
+
+#ifdef APSTUDIO_INVOKED
+
+1 TEXTINCLUDE
+BEGIN
+ "PadSSSPSXres.h\0"
+END
+
+2 TEXTINCLUDE
+BEGIN
+ "#include ""afxres.h""\r\n"
+ "\0"
+END
+
+3 TEXTINCLUDE
+BEGIN
+ "\r\n"
+ "\0"
+END
+
+#endif
+
+IDD_DIALOG1 DIALOGEX 0, 0, 442, 239
+STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION
+CAPTION "PAD Settings"
+FONT 8, "MS Shell Dlg", 400, 0, 0x1
+BEGIN
+ CONTROL "",IDC_TABC,"SysTabControl32",0x0,6,6,432,210
+ PUSHBUTTON "L2",IDC_BL2,54,24,72,12,NOT WS_TABSTOP
+ EDITTEXT IDC_EL2,54,36,72,12,ES_READONLY | NOT WS_TABSTOP
+ PUSHBUTTON "L1",IDC_BL1,54,48,72,12,NOT WS_TABSTOP
+ EDITTEXT IDC_EL1,54,60,72,12,ES_READONLY | NOT WS_TABSTOP
+ PUSHBUTTON "Up",IDC_BUP,54,78,72,12,NOT WS_TABSTOP
+ EDITTEXT IDC_EUP,54,90,72,12,ES_READONLY | NOT WS_TABSTOP
+ PUSHBUTTON "Left",IDC_BLEFT,12,102,72,12,NOT WS_TABSTOP
+ EDITTEXT IDC_ELEFT,12,114,72,12,ES_READONLY | NOT WS_TABSTOP
+ PUSHBUTTON "Right",IDC_BRIGHT,96,102,72,12,NOT WS_TABSTOP
+ EDITTEXT IDC_ERIGHT,96,114,72,12,ES_READONLY | NOT WS_TABSTOP
+ PUSHBUTTON "Down",IDC_BDOWN,54,126,72,12,NOT WS_TABSTOP
+ EDITTEXT IDC_EDOWN,54,138,72,12,ES_READONLY | NOT WS_TABSTOP
+ PUSHBUTTON "Select",IDC_BSELECT,144,36,72,12,NOT WS_TABSTOP,
+ WS_EX_TRANSPARENT
+ EDITTEXT IDC_ESELECT,144,48,72,12,ES_READONLY | NOT WS_TABSTOP,
+ WS_EX_TRANSPARENT
+ PUSHBUTTON "Start",IDC_BSTART,228,36,72,12,NOT WS_TABSTOP,
+ WS_EX_TRANSPARENT
+ EDITTEXT IDC_ESTART,228,48,72,12,ES_READONLY | NOT WS_TABSTOP,
+ WS_EX_TRANSPARENT
+ PUSHBUTTON "Analog",IDC_BMODE,186,66,72,12,NOT WS_TABSTOP,
+ WS_EX_TRANSPARENT
+ EDITTEXT IDC_EMODE,186,78,72,12,ES_READONLY | NOT WS_TABSTOP,
+ WS_EX_TRANSPARENT
+ PUSHBUTTON "R2",IDC_BR2,318,24,72,12,NOT WS_TABSTOP
+ EDITTEXT IDC_ER2,318,36,72,12,ES_AUTOHSCROLL | ES_READONLY | NOT
+ WS_TABSTOP
+ PUSHBUTTON "R1",IDC_BR1,318,48,72,12,NOT WS_TABSTOP
+ EDITTEXT IDC_ER1,318,60,72,12,ES_AUTOHSCROLL | ES_READONLY | NOT
+ WS_TABSTOP
+ PUSHBUTTON "Triangle",IDC_BTRIANGLE,318,78,72,12,NOT WS_TABSTOP
+ EDITTEXT IDC_ETRIANGLE,318,90,72,12,ES_AUTOHSCROLL | ES_READONLY |
+ NOT WS_TABSTOP
+ PUSHBUTTON "Square",IDC_BSQUARE,276,102,72,12,NOT WS_TABSTOP
+ EDITTEXT IDC_ESQUARE,276,114,72,12,ES_AUTOHSCROLL | ES_READONLY |
+ NOT WS_TABSTOP
+ PUSHBUTTON "Circle",IDC_BCIRCLE,360,102,72,12,NOT WS_TABSTOP
+ EDITTEXT IDC_ECIRCLE,360,114,72,12,ES_AUTOHSCROLL | ES_READONLY |
+ NOT WS_TABSTOP
+ PUSHBUTTON "Cross",IDC_BCROSS,318,126,72,12,NOT WS_TABSTOP
+ EDITTEXT IDC_ECROSS,318,138,72,12,ES_AUTOHSCROLL | ES_READONLY |
+ NOT WS_TABSTOP
+ PUSHBUTTON "L3",IDC_BL3,144,132,72,12,NOT WS_TABSTOP
+ EDITTEXT IDC_EL3,144,144,72,12,ES_READONLY | NOT WS_TABSTOP
+ PUSHBUTTON "LX",IDC_BLAX,144,162,72,12,NOT WS_TABSTOP
+ EDITTEXT IDC_ELAX,144,174,72,12,ES_READONLY | NOT WS_TABSTOP
+ PUSHBUTTON "LY",IDC_BLAY,144,186,72,12,NOT WS_TABSTOP
+ EDITTEXT IDC_ELAY,144,198,72,12,ES_READONLY | NOT WS_TABSTOP
+ PUSHBUTTON "R3",IDC_BR3,228,132,72,12,NOT WS_TABSTOP
+ EDITTEXT IDC_ER3,228,144,72,12,ES_READONLY | NOT WS_TABSTOP
+ PUSHBUTTON "RX",IDC_BRAX,228,162,72,12,NOT WS_TABSTOP
+ EDITTEXT IDC_ERAX,228,174,72,12,ES_READONLY | NOT WS_TABSTOP
+ PUSHBUTTON "RY",IDC_BRAY,228,186,72,12,NOT WS_TABSTOP
+ EDITTEXT IDC_ERAY,228,198,72,12,ES_READONLY | NOT WS_TABSTOP
+ PUSHBUTTON "OK",IDOK,330,222,48,12,NOT WS_TABSTOP
+ PUSHBUTTON "Cancel",IDCANCEL,390,222,48,12,NOT WS_TABSTOP
+ CTEXT "",IDC_STATIC,318,174,108,30,0,WS_EX_STATICEDGE
+ CONTROL "DUALSHOCK2 INSIDE", IDC_DS2, "Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,331,186,84,8
+END
+
+#ifdef APSTUDIO_INVOKED
+GUIDELINES DESIGNINFO
+BEGIN
+ IDD_DIALOG1, DIALOG
+ BEGIN
+ RIGHTMARGIN, 432
+ BOTTOMMARGIN, 233
+ END
+END
+#endif
+
+#endif
+
+
+#ifndef APSTUDIO_INVOKED
+
+#endif
+
diff --git a/win32/plugins/PadSSSPSX/PadSSSPSXres.h b/win32/plugins/PadSSSPSX/PadSSSPSXres.h
new file mode 100644
index 00000000..0cf7a354
--- /dev/null
+++ b/win32/plugins/PadSSSPSX/PadSSSPSXres.h
@@ -0,0 +1,60 @@
+//{{NO_DEPENDENCIES}}
+// Microsoft Visual C++ generated include file.
+// Used by PadSSSPSX.rc
+//
+#define IDD_DIALOG1 100
+#define IDC_BSELECT 1000
+#define IDC_BL3 1001
+#define IDC_BR3 1002
+#define IDC_BSTART 1003
+#define IDC_BUP 1004
+#define IDC_BRIGHT 1005
+#define IDC_BDOWN 1006
+#define IDC_BLEFT 1007
+#define IDC_BL2 1008
+#define IDC_BR2 1009
+#define IDC_BL1 1010
+#define IDC_BR1 1011
+#define IDC_BTRIANGLE 1012
+#define IDC_BCIRCLE 1013
+#define IDC_BCROSS 1014
+#define IDC_BSQUARE 1015
+#define IDC_BMODE 1016
+#define IDC_BLAX 1017
+#define IDC_BLAY 1018
+#define IDC_BRAX 1019
+#define IDC_BRAY 1020
+#define IDC_ESELECT 1030
+#define IDC_EL3 1031
+#define IDC_ER3 1032
+#define IDC_ESTART 1033
+#define IDC_EUP 1034
+#define IDC_ERIGHT 1035
+#define IDC_EDOWN 1036
+#define IDC_ELEFT 1037
+#define IDC_EL2 1038
+#define IDC_ER2 1039
+#define IDC_EL1 1040
+#define IDC_ER1 1041
+#define IDC_ETRIANGLE 1042
+#define IDC_ECIRCLE 1043
+#define IDC_ECROSS 1044
+#define IDC_ESQUARE 1045
+#define IDC_EMODE 1046
+#define IDC_ELAX 1047
+#define IDC_ELAY 1048
+#define IDC_ERAX 1049
+#define IDC_ERAY 1050
+#define IDC_TABC 1060
+#define IDC_DS2 1070
+
+// Next default values for new objects
+//
+#ifdef APSTUDIO_INVOKED
+#ifndef APSTUDIO_READONLY_SYMBOLS
+#define _APS_NEXT_RESOURCE_VALUE 101
+#define _APS_NEXT_COMMAND_VALUE 40001
+#define _APS_NEXT_CONTROL_VALUE 1061
+#define _APS_NEXT_SYMED_VALUE 101
+#endif
+#endif
diff --git a/win32/plugins/PadSSSPSX/readmewip.txt b/win32/plugins/PadSSSPSX/readmewip.txt
new file mode 100644
index 00000000..14443362
--- /dev/null
+++ b/win32/plugins/PadSSSPSX/readmewip.txt
@@ -0,0 +1,48 @@
+SSSPSX Pad - An Open Source Pad plugin for PSX and PS2 emulators
+Author: Nagisa
+Homepage: http://www.asahi-net.or.jp/~bz7t-skmt/
+
+Overview:
+-Small executable program
+-Source code under 1000 step,20kb binary
+-Open Source,under the GPL Licence
+
+
+Features:
+
+For PS1 emulators
+- Force feedback support (PCSX only)
+ Delete the following PCSX sorce code.
+ File: sio.c Line: 138
+@---------------------
+@if (buf[parp] == 0x41) {
+@@switch (value) {
+@@@case 0x43:
+@@@@buf[1] = 0x43;
+@@@@break;
+@@@case 0x45:
+@@@@buf[1] = 0xf3;
+@@@@break;
+@@}
+@}
+@---------------------
+
+For PCSX2
+-Force feedback support (maybe)
+-PADKeyEvent API support
+-Using DirectInput 9 (game controller and keyboard)
+
+Thanks to:
+http://www.hm5.aitai.ne.jp/~takuya/index.html#ds2_analisys for the valuable info
+PCSX2 team for the PadWinKeyb source code
+bositman for some report
+
+Version History:
+v1.0: -Initial Release
+v1.1: -Changed to DirectInput 9
+v1.2: -PADKeyEvent API support added
+v1.3: -DirectInput collision problem fixed
+v1.4: -Added timeout on settings dialog.If the countdown ends, the key will be set to "NONE".
+ -Changed "ESC" key action on settings dialog.If you press the "ESC" key, the setting will keep the previous one.
+ -Fixed silly bug. (dont ask me about it).
+v1.5: -Fixed 0x4D packet.