Fixed up the Linux build. A couple minor OnePad changes.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@1487 96395faa-99c1-11dd-bbfe-3dabce05a288
This commit is contained in:
arcum42 2009-07-11 17:21:23 +00:00
parent 14ccee3153
commit 192f602ae7
11 changed files with 100 additions and 101 deletions

View File

@ -22,7 +22,7 @@ $pcsx2_prefix = " --prefix #{$main_dir}"
$plugins_prefix = " --prefix #{$plugin_install_dir}" $plugins_prefix = " --prefix #{$plugin_install_dir}"
$plugin_list=["CDVDnull", "dev9null", "FWnull", "USBnull", "SPU2null", "zerogs", "zzogl", "zeropad", "zerospu2", "PeopsSPU2", "CDVDiso", "CDVDisoEFP", "CDVDlinuz"] $plugin_list=["CDVDnull", "dev9null", "FWnull", "USBnull", "SPU2null", "zerogs", "zzogl", "zeropad", "zerospu2", "PeopsSPU2", "CDVDiso", "CDVDisoEFP", "CDVDlinuz"]
$full_plugin_list=["CDVDnull", "dev9null", "FWnull", "USBnull", "SPU2null", "zerogs", "zzogl", "zeropad", "zerospu2", "PeopsSPU2", "CDVDiso", "CDVDisoEFP", "CDVDlinuz","GSnull","PadNull","wxpad"] $full_plugin_list=["CDVDnull", "dev9null", "FWnull", "USBnull", "SPU2null", "zerogs", "zzogl", "zeropad", "zerospu2", "PeopsSPU2", "CDVDiso", "CDVDisoEFP", "CDVDlinuz","GSnull","PadNull","onepad"]
$pcsx2_build_types = { $pcsx2_build_types = {
"dev" => " --enable-devbuild ", "dev" => " --enable-devbuild ",

View File

@ -12,7 +12,7 @@ INCLUDES = -I$(top_srcdir) -I$(x86_dir) -I$(common_dir) -I$(third_dir)
noinst_LIBRARIES = libps2_cdvd.a noinst_LIBRARIES = libps2_cdvd.a
libps2_cdvd_a_SOURCES = \ libps2_cdvd_a_SOURCES = \
CDVD.cpp CDVDiso.cpp CDVDisodrv.cpp CdRom.cpp \ CDVD.cpp IsoFStools.cpp IsoFSdrv.cpp CdRom.cpp \
CDVD.h CDVD_internal.h CDVDiso.h CDVDisodrv.h CDVDlib.h CdRom.h CDVD.h CDVD_internal.h IsoFStools.h IsoFSdrv.h IsoFScdvd.h CdRom.h
#SUBDIRS = #SUBDIRS =

View File

@ -461,6 +461,7 @@ static __forceinline BOOL ipuIDEC(u32 val)
s_routine = so_create(mpeg2sliceIDEC, &s_RoutineDone, s_tempstack, sizeof(s_tempstack)); s_routine = so_create(mpeg2sliceIDEC, &s_RoutineDone, s_tempstack, sizeof(s_tempstack));
assert(s_routine != NULL); assert(s_routine != NULL);
//return;
so_call(s_routine); so_call(s_routine);
if (s_RoutineDone) s_routine = NULL; if (s_RoutineDone) s_routine = NULL;

View File

@ -1131,7 +1131,7 @@ void __forceinline finishmpeg2sliceIDEC(decoder_t* &decoder)
} }
// This fixes Mana Khemia if uncommented, but needs testing. // This fixes Mana Khemia if uncommented, but needs testing.
//#define ALWAYS_RESUME_BEFORE_EXITING #define ALWAYS_RESUME_BEFORE_EXITING
void mpeg2sliceIDEC(void* pdone) void mpeg2sliceIDEC(void* pdone)
{ {
u32 read; u32 read;
@ -1222,6 +1222,11 @@ void mpeg2sliceIDEC(void* pdone)
{ {
read = FIFOfrom_write((u32*)g_pIPU0Pointer, g_nIPU0Data); read = FIFOfrom_write((u32*)g_pIPU0Pointer, g_nIPU0Data);
if (read != 8)
{
Console::Error("g_nIPU0Data = 0x%x; read = 0x%x", params g_nIPU0Data, read);
}
if (read == 0) if (read == 0)
{ {
so_resume(); so_resume();
@ -1231,6 +1236,7 @@ void mpeg2sliceIDEC(void* pdone)
{ {
g_pIPU0Pointer += read * 16; g_pIPU0Pointer += read * 16;
g_nIPU0Data -= read; g_nIPU0Data -= read;
} }
} }
@ -1240,6 +1246,14 @@ void mpeg2sliceIDEC(void* pdone)
NEEDBITS(decoder->bitstream_buf, decoder->bitstream_bits, decoder->bitstream_ptr); NEEDBITS(decoder->bitstream_buf, decoder->bitstream_bits, decoder->bitstream_ptr);
mba_inc = 0; mba_inc = 0;
#ifdef ALWAYS_RESUME_BEFORE_EXITING
if (!resumed)
{
so_resume();
Console::Error("Resume forced in mpeg2sliceIDEC:1");
}
#endif
while (1) while (1)
{ {
if (decoder->bitstream_buf >= 0x10000000) if (decoder->bitstream_buf >= 0x10000000)
@ -1256,19 +1270,19 @@ void mpeg2sliceIDEC(void* pdone)
{ {
case 8: /* macroblock_escape */ case 8: /* macroblock_escape */
Console::Error("macroblock escape ");
mba_inc += 33; mba_inc += 33;
/* pass through */ /* pass through */
case 15: /* macroblock_stuffing (MPEG1 only) */ case 15: /* macroblock_stuffing (MPEG1 only) */
Console::Error("macroblock_stuffing (MPEG1 only) ");
DUMPBITS(decoder->bitstream_buf, decoder->bitstream_bits, 11); DUMPBITS(decoder->bitstream_buf, decoder->bitstream_bits, 11);
NEEDBITS(decoder->bitstream_buf, decoder->bitstream_bits, decoder->bitstream_ptr); NEEDBITS(decoder->bitstream_buf, decoder->bitstream_bits, decoder->bitstream_ptr);
continue; continue;
default: /* end of slice/frame, or error? */ default: /* end of slice/frame, or error? */
{ {
#ifdef ALWAYS_RESUME_BEFORE_EXITING Console::Error("UBITS(decoder->bitstream_buf, 11) is 0x%x", params UBITS(decoder->bitstream_buf, 11));
if (!resumed) so_resume();
#endif
finishmpeg2sliceIDEC(decoder); finishmpeg2sliceIDEC(decoder);
@ -1297,7 +1311,11 @@ void mpeg2sliceIDEC(void* pdone)
} }
#ifdef ALWAYS_RESUME_BEFORE_EXITING #ifdef ALWAYS_RESUME_BEFORE_EXITING
if (!resumed) so_resume(); if (!resumed)
{
so_resume();
Console::Error("Resume forced in mpeg2sliceIDEC:2");
}
#endif #endif
finishmpeg2sliceIDEC(decoder); finishmpeg2sliceIDEC(decoder);

View File

@ -638,7 +638,6 @@ create_SpeedHacksDlg (void)
GtkWidget *alignment37; GtkWidget *alignment37;
GtkWidget *vbox76; GtkWidget *vbox76;
GtkWidget *check_iop_cycle_rate; GtkWidget *check_iop_cycle_rate;
GtkWidget *check_wait_cycles_sync_hack;
GtkWidget *check_intc_sync_hack; GtkWidget *check_intc_sync_hack;
GtkWidget *check_idle_loop_fastforward; GtkWidget *check_idle_loop_fastforward;
GtkWidget *label114; GtkWidget *label114;
@ -792,12 +791,6 @@ create_SpeedHacksDlg (void)
gtk_box_pack_start (GTK_BOX (vbox76), check_iop_cycle_rate, FALSE, FALSE, 0); gtk_box_pack_start (GTK_BOX (vbox76), check_iop_cycle_rate, FALSE, FALSE, 0);
gtk_tooltips_set_tip (tooltips, check_iop_cycle_rate, _("Small speedup, and works well with most games."), NULL); gtk_tooltips_set_tip (tooltips, check_iop_cycle_rate, _("Small speedup, and works well with most games."), NULL);
check_wait_cycles_sync_hack = gtk_check_button_new_with_mnemonic (_("WaitCycles Sync Hack"));
gtk_widget_set_name (check_wait_cycles_sync_hack, "check_wait_cycles_sync_hack");
gtk_widget_show (check_wait_cycles_sync_hack);
gtk_box_pack_start (GTK_BOX (vbox76), check_wait_cycles_sync_hack, FALSE, FALSE, 0);
gtk_tooltips_set_tip (tooltips, check_wait_cycles_sync_hack, _("Small speedup. Works well with most games, but it may cause certain games to crash, or freeze up during bootup or stage changes."), NULL);
check_intc_sync_hack = gtk_check_button_new_with_mnemonic (_("INTC Sync Hack")); check_intc_sync_hack = gtk_check_button_new_with_mnemonic (_("INTC Sync Hack"));
gtk_widget_set_name (check_intc_sync_hack, "check_intc_sync_hack"); gtk_widget_set_name (check_intc_sync_hack, "check_intc_sync_hack");
gtk_widget_show (check_intc_sync_hack); gtk_widget_show (check_intc_sync_hack);
@ -909,7 +902,6 @@ create_SpeedHacksDlg (void)
GLADE_HOOKUP_OBJECT (SpeedHacksDlg, alignment37, "alignment37"); GLADE_HOOKUP_OBJECT (SpeedHacksDlg, alignment37, "alignment37");
GLADE_HOOKUP_OBJECT (SpeedHacksDlg, vbox76, "vbox76"); GLADE_HOOKUP_OBJECT (SpeedHacksDlg, vbox76, "vbox76");
GLADE_HOOKUP_OBJECT (SpeedHacksDlg, check_iop_cycle_rate, "check_iop_cycle_rate"); GLADE_HOOKUP_OBJECT (SpeedHacksDlg, check_iop_cycle_rate, "check_iop_cycle_rate");
GLADE_HOOKUP_OBJECT (SpeedHacksDlg, check_wait_cycles_sync_hack, "check_wait_cycles_sync_hack");
GLADE_HOOKUP_OBJECT (SpeedHacksDlg, check_intc_sync_hack, "check_intc_sync_hack"); GLADE_HOOKUP_OBJECT (SpeedHacksDlg, check_intc_sync_hack, "check_intc_sync_hack");
GLADE_HOOKUP_OBJECT (SpeedHacksDlg, check_idle_loop_fastforward, "check_idle_loop_fastforward"); GLADE_HOOKUP_OBJECT (SpeedHacksDlg, check_idle_loop_fastforward, "check_idle_loop_fastforward");
GLADE_HOOKUP_OBJECT (SpeedHacksDlg, label114, "label114"); GLADE_HOOKUP_OBJECT (SpeedHacksDlg, label114, "label114");

View File

@ -1582,26 +1582,6 @@ If you have problems, Disable all of these and try again.</property>
</packing> </packing>
</child> </child>
<child>
<widget class="GtkCheckButton" id="check_wait_cycles_sync_hack">
<property name="visible">True</property>
<property name="tooltip" translatable="yes">Small speedup. Works well with most games, but it may cause certain games to crash, or freeze up during bootup or stage changes.</property>
<property name="can_focus">True</property>
<property name="label" translatable="yes">WaitCycles Sync Hack</property>
<property name="use_underline">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="focus_on_click">True</property>
<property name="active">False</property>
<property name="inconsistent">False</property>
<property name="draw_indicator">True</property>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">False</property>
<property name="fill">False</property>
</packing>
</child>
<child> <child>
<widget class="GtkCheckButton" id="check_intc_sync_hack"> <widget class="GtkCheckButton" id="check_intc_sync_hack">
<property name="visible">True</property> <property name="visible">True</property>

View File

@ -120,24 +120,6 @@ EXPORT_C_(void) PADupdate(int pad)
set_bit(status[pad], i); // pressed set_bit(status[pad], i); // pressed
break; break;
} }
case PAD_JOYSTICK:
{
int value = SDL_JoystickGetAxis((pjoy)->GetJoy(), key_to_axis(cpad, i));
switch (i)
{
case PAD_LX:
case PAD_LY:
case PAD_RX:
case PAD_RY:
if (abs(value) > (pjoy)->GetDeadzone(value))
Analog::ConfigurePad(i, pad, value);
else
Analog::ResetPad(i, pad);
break;
}
break;
}
case PAD_HAT: case PAD_HAT:
{ {
int value = SDL_JoystickGetHat((pjoy)->GetJoy(), key_to_axis(cpad, i)); int value = SDL_JoystickGetHat((pjoy)->GetJoy(), key_to_axis(cpad, i));
@ -158,12 +140,40 @@ EXPORT_C_(void) PADupdate(int pad)
{ {
int value = SDL_JoystickGetAxis((pjoy)->GetJoy(), key_to_axis(cpad, i)); int value = SDL_JoystickGetAxis((pjoy)->GetJoy(), key_to_axis(cpad, i));
PAD_LOG("%s: %d (%d)\n", KeyName(cpad, i).c_str(), value, key_to_pov_sign(cpad, i));
if (key_to_pov_sign(cpad, i) && (value < -2048)) if (key_to_pov_sign(cpad, i) && (value < -2048))
{
//PAD_LOG("%s Released+.\n", KeyName(cpad, i).c_str());
clear_bit(status[pad], i); clear_bit(status[pad], i);
}
else if (!key_to_pov_sign(cpad, i) && (value > 2048)) else if (!key_to_pov_sign(cpad, i) && (value > 2048))
{
//PAD_LOG("%s Released-\n", KeyName(cpad, i).c_str());
clear_bit(status[pad], i); clear_bit(status[pad], i);
}
else else
{
//PAD_LOG("%s Pressed.\n", KeyName(cpad, i).c_str());
set_bit(status[pad], i); set_bit(status[pad], i);
}
break;
}
case PAD_JOYSTICK:
{
int value = SDL_JoystickGetAxis((pjoy)->GetJoy(), key_to_axis(cpad, i));
switch (i)
{
case PAD_LX:
case PAD_LY:
case PAD_RX:
case PAD_RY:
if (abs(value) > (pjoy)->GetDeadzone(value))
Analog::ConfigurePad(pad, i, value);
else
Analog::ResetPad(pad, i);
break;
}
break; break;
} }
default: break; default: break;

View File

@ -24,24 +24,24 @@ PADAnalog g_lanalog[NUM_OF_PADS], g_ranalog[NUM_OF_PADS];
namespace Analog namespace Analog
{ {
u8 Pad(int padvalue, u8 i) u8 Pad(int pad, u8 index)
{ {
switch (padvalue) switch (index)
{ {
case PAD_LX: case PAD_LX:
return g_lanalog[i].x; return g_lanalog[pad].x;
break; break;
case PAD_RX: case PAD_RX:
return g_ranalog[i].x; return g_ranalog[pad].x;
break; break;
case PAD_LY: case PAD_LY:
return g_lanalog[i].y; return g_lanalog[pad].y;
break; break;
case PAD_RY: case PAD_RY:
return g_ranalog[i].y; return g_ranalog[pad].y;
break; break;
default: default:
@ -50,24 +50,24 @@ namespace Analog
} }
} }
void SetPad(int padvalue, u8 i, u8 value) void SetPad(u8 pad, int index, u8 value)
{ {
switch (padvalue) switch (index)
{ {
case PAD_LX: case PAD_LX:
g_lanalog[i].x = value; g_lanalog[pad].x = value;
break; break;
case PAD_RX: case PAD_RX:
g_ranalog[i].x = value; g_ranalog[ pad].x = value;
break; break;
case PAD_LY: case PAD_LY:
g_lanalog[i].y = value; g_lanalog[ pad].y = value;
break; break;
case PAD_RY: case PAD_RY:
g_ranalog[i].y = value; g_ranalog[pad].y = value;
break; break;
default: default:
@ -75,30 +75,30 @@ namespace Analog
} }
} }
void InvertPad(int padvalue, u8 i) void InvertPad(u8 pad, int key)
{ {
SetPad(padvalue, i, -Pad(padvalue, i)); SetPad(pad, key, -Pad(pad, key));
} }
void ResetPad(int padvalue, u8 i) void ResetPad( u8 pad, int key)
{ {
SetPad(padvalue, i, 0x80); SetPad(pad, key, 0x80);
} }
void Init() void Init()
{ {
for (int i = 0; i < 2; ++i) for (u8 pad = 0; pad < 2; ++pad)
{ {
ResetPad(PAD_LX, i); ResetPad(pad, PAD_LX);
ResetPad(PAD_LY, i); ResetPad(pad, PAD_LY);
ResetPad(PAD_RX, i); ResetPad(pad, PAD_RX);
ResetPad(PAD_RY, i); ResetPad(pad, PAD_RY);
} }
} }
bool RevertPad(u8 padvalue) bool RevertPad(u8 index)
{ {
switch (padvalue) switch (index)
{ {
case PAD_LX: case PAD_LX:
return ((conf.options & PADOPTION_REVERTLX) != 0); return ((conf.options & PADOPTION_REVERTLX) != 0);
@ -122,18 +122,17 @@ namespace Analog
} }
} }
void ConfigurePad(int padvalue, u8 i, int value) void ConfigurePad( u8 pad, int index, int value)
{ {
int temp = Pad(padvalue, i); int temp = Pad(pad, index);
SetPad(padvalue, i, value / 256); SetPad(pad, index, value / 256);
if (RevertPad(padvalue)) InvertPad(padvalue, i); if (RevertPad(index)) InvertPad(pad,index);
SetPad(padvalue, i, Pad(padvalue, i) + 0x80); SetPad(pad, index, Pad(pad, index) + 0x80);
//PAD_LOG("Setting pad[%d]@%d to %d from %d\n", padvalue, i, value, temp);
} }
int AnalogToPad(int padvalue)
int AnalogToPad(int index)
{ {
switch (padvalue) switch (index)
{ {
case PAD_R_LEFT: case PAD_R_LEFT:
return PAD_RX; return PAD_RX;

View File

@ -25,12 +25,12 @@
namespace Analog namespace Analog
{ {
extern void Init(); extern void Init();
extern u8 Pad(int padvalue, u8 i); extern u8 Pad(int pad, u8 index);
extern void SetPad(int padvalue, u8 i, u8 value); extern void SetPad(u8 pad, int index, u8 value);
extern void InvertPad(int padvalue, u8 i); extern void InvertPad(u8 pad, int key);
extern bool RevertPad(u8 padvalue); extern bool RevertPad(u8 index);
extern void ResetPad(int padvalue, u8 i); extern void ResetPad( u8 pad, int key);
extern void ConfigurePad(int padvalue, u8 i, int value); extern void ConfigurePad( u8 pad, int index, int value);
extern int KeypadToPad(u8 keypress); extern int KeypadToPad(u8 keypress);
extern int AnalogToPad(int padvalue); extern int AnalogToPad(int index);
} }

View File

@ -92,13 +92,13 @@ void PollForX11KeyboardInput(int pad)
case PAD_R_UP: case PAD_R_UP:
case PAD_L_LEFT: case PAD_L_LEFT:
case PAD_L_UP: case PAD_L_UP:
Analog::ConfigurePad(Analog::AnalogToPad(i), pad, DEF_VALUE); Analog::ConfigurePad(pad, Analog::AnalogToPad(i), DEF_VALUE);
break; break;
case PAD_R_RIGHT: case PAD_R_RIGHT:
case PAD_R_DOWN: case PAD_R_DOWN:
case PAD_L_RIGHT: case PAD_L_RIGHT:
case PAD_L_DOWN: case PAD_L_DOWN:
Analog::ConfigurePad(Analog::AnalogToPad(i), pad, -DEF_VALUE); Analog::ConfigurePad(pad, Analog::AnalogToPad(i), -DEF_VALUE);
break; break;
} }
i += 0xff00; i += 0xff00;
@ -123,7 +123,7 @@ void PollForX11KeyboardInput(int pad)
// Analog Controls. // Analog Controls.
if ((i > PAD_RY) && (i <= PAD_R_LEFT)) if ((i > PAD_RY) && (i <= PAD_R_LEFT))
{ {
Analog::ResetPad(Analog::AnalogToPad(i), pad); Analog::ResetPad(pad, Analog::AnalogToPad(i));
i += 0xff00; i += 0xff00;
} }

View File

@ -195,7 +195,6 @@ void __Log(const char *fmt, ...)
{ {
va_list list; va_list list;
//if (padLog == NULL || !conf.log) return;
if (padLog == NULL) return; if (padLog == NULL) return;
va_start(list, fmt); va_start(list, fmt);
vfprintf(padLog, fmt, list); vfprintf(padLog, fmt, list);
@ -393,10 +392,10 @@ u8 _PADpoll(u8 value)
stdpar[curPad][2] = status[curPad] >> 8; stdpar[curPad][2] = status[curPad] >> 8;
stdpar[curPad][3] = status[curPad] & 0xff; stdpar[curPad][3] = status[curPad] & 0xff;
stdpar[curPad][4] = Analog::Pad(PAD_RX, curPad); stdpar[curPad][4] = Analog::Pad(curPad, PAD_RX);
stdpar[curPad][5] = Analog::Pad(PAD_RY, curPad); stdpar[curPad][5] = Analog::Pad(curPad, PAD_RY);
stdpar[curPad][6] = Analog::Pad(PAD_LX, curPad); stdpar[curPad][6] = Analog::Pad(curPad, PAD_LX);
stdpar[curPad][7] = Analog::Pad(PAD_LY, curPad); stdpar[curPad][7] = Analog::Pad(curPad, PAD_LY);
if (padMode[curPad] == 1) if (padMode[curPad] == 1)
cmdLen = 20; cmdLen = 20;