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}"
$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 = {
"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
libps2_cdvd_a_SOURCES = \
CDVD.cpp CDVDiso.cpp CDVDisodrv.cpp CdRom.cpp \
CDVD.h CDVD_internal.h CDVDiso.h CDVDisodrv.h CDVDlib.h CdRom.h
CDVD.cpp IsoFStools.cpp IsoFSdrv.cpp CdRom.cpp \
CDVD.h CDVD_internal.h IsoFStools.h IsoFSdrv.h IsoFScdvd.h CdRom.h
#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));
assert(s_routine != NULL);
//return;
so_call(s_routine);
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.
//#define ALWAYS_RESUME_BEFORE_EXITING
#define ALWAYS_RESUME_BEFORE_EXITING
void mpeg2sliceIDEC(void* pdone)
{
u32 read;
@ -1222,6 +1222,11 @@ void mpeg2sliceIDEC(void* pdone)
{
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)
{
so_resume();
@ -1231,6 +1236,7 @@ void mpeg2sliceIDEC(void* pdone)
{
g_pIPU0Pointer += read * 16;
g_nIPU0Data -= read;
}
}
@ -1240,6 +1246,14 @@ void mpeg2sliceIDEC(void* pdone)
NEEDBITS(decoder->bitstream_buf, decoder->bitstream_bits, decoder->bitstream_ptr);
mba_inc = 0;
#ifdef ALWAYS_RESUME_BEFORE_EXITING
if (!resumed)
{
so_resume();
Console::Error("Resume forced in mpeg2sliceIDEC:1");
}
#endif
while (1)
{
if (decoder->bitstream_buf >= 0x10000000)
@ -1256,19 +1270,19 @@ void mpeg2sliceIDEC(void* pdone)
{
case 8: /* macroblock_escape */
Console::Error("macroblock escape ");
mba_inc += 33;
/* pass through */
case 15: /* macroblock_stuffing (MPEG1 only) */
Console::Error("macroblock_stuffing (MPEG1 only) ");
DUMPBITS(decoder->bitstream_buf, decoder->bitstream_bits, 11);
NEEDBITS(decoder->bitstream_buf, decoder->bitstream_bits, decoder->bitstream_ptr);
continue;
default: /* end of slice/frame, or error? */
{
#ifdef ALWAYS_RESUME_BEFORE_EXITING
if (!resumed) so_resume();
#endif
Console::Error("UBITS(decoder->bitstream_buf, 11) is 0x%x", params UBITS(decoder->bitstream_buf, 11));
finishmpeg2sliceIDEC(decoder);
@ -1297,7 +1311,11 @@ void mpeg2sliceIDEC(void* pdone)
}
#ifdef ALWAYS_RESUME_BEFORE_EXITING
if (!resumed) so_resume();
if (!resumed)
{
so_resume();
Console::Error("Resume forced in mpeg2sliceIDEC:2");
}
#endif
finishmpeg2sliceIDEC(decoder);

View File

@ -638,7 +638,6 @@ create_SpeedHacksDlg (void)
GtkWidget *alignment37;
GtkWidget *vbox76;
GtkWidget *check_iop_cycle_rate;
GtkWidget *check_wait_cycles_sync_hack;
GtkWidget *check_intc_sync_hack;
GtkWidget *check_idle_loop_fastforward;
GtkWidget *label114;
@ -792,12 +791,6 @@ create_SpeedHacksDlg (void)
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);
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"));
gtk_widget_set_name (check_intc_sync_hack, "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, vbox76, "vbox76");
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_idle_loop_fastforward, "check_idle_loop_fastforward");
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>
</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>
<widget class="GtkCheckButton" id="check_intc_sync_hack">
<property name="visible">True</property>

View File

@ -120,24 +120,6 @@ EXPORT_C_(void) PADupdate(int pad)
set_bit(status[pad], i); // pressed
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:
{
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));
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))
{
//PAD_LOG("%s Released+.\n", KeyName(cpad, i).c_str());
clear_bit(status[pad], i);
}
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);
}
else
{
//PAD_LOG("%s Pressed.\n", KeyName(cpad, i).c_str());
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;
}
default: break;

View File

@ -24,24 +24,24 @@ PADAnalog g_lanalog[NUM_OF_PADS], g_ranalog[NUM_OF_PADS];
namespace Analog
{
u8 Pad(int padvalue, u8 i)
u8 Pad(int pad, u8 index)
{
switch (padvalue)
switch (index)
{
case PAD_LX:
return g_lanalog[i].x;
return g_lanalog[pad].x;
break;
case PAD_RX:
return g_ranalog[i].x;
return g_ranalog[pad].x;
break;
case PAD_LY:
return g_lanalog[i].y;
return g_lanalog[pad].y;
break;
case PAD_RY:
return g_ranalog[i].y;
return g_ranalog[pad].y;
break;
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:
g_lanalog[i].x = value;
g_lanalog[pad].x = value;
break;
case PAD_RX:
g_ranalog[i].x = value;
g_ranalog[ pad].x = value;
break;
case PAD_LY:
g_lanalog[i].y = value;
g_lanalog[ pad].y = value;
break;
case PAD_RY:
g_ranalog[i].y = value;
g_ranalog[pad].y = value;
break;
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()
{
for (int i = 0; i < 2; ++i)
for (u8 pad = 0; pad < 2; ++pad)
{
ResetPad(PAD_LX, i);
ResetPad(PAD_LY, i);
ResetPad(PAD_RX, i);
ResetPad(PAD_RY, i);
ResetPad(pad, PAD_LX);
ResetPad(pad, PAD_LY);
ResetPad(pad, PAD_RX);
ResetPad(pad, PAD_RY);
}
}
bool RevertPad(u8 padvalue)
bool RevertPad(u8 index)
{
switch (padvalue)
switch (index)
{
case PAD_LX:
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);
SetPad(padvalue, i, value / 256);
if (RevertPad(padvalue)) InvertPad(padvalue, i);
SetPad(padvalue, i, Pad(padvalue, i) + 0x80);
//PAD_LOG("Setting pad[%d]@%d to %d from %d\n", padvalue, i, value, temp);
int temp = Pad(pad, index);
SetPad(pad, index, value / 256);
if (RevertPad(index)) InvertPad(pad,index);
SetPad(pad, index, Pad(pad, index) + 0x80);
}
int AnalogToPad(int padvalue)
int AnalogToPad(int index)
{
switch (padvalue)
switch (index)
{
case PAD_R_LEFT:
return PAD_RX;

View File

@ -25,12 +25,12 @@
namespace Analog
{
extern void Init();
extern u8 Pad(int padvalue, u8 i);
extern void SetPad(int padvalue, u8 i, u8 value);
extern void InvertPad(int padvalue, u8 i);
extern bool RevertPad(u8 padvalue);
extern void ResetPad(int padvalue, u8 i);
extern void ConfigurePad(int padvalue, u8 i, int value);
extern u8 Pad(int pad, u8 index);
extern void SetPad(u8 pad, int index, u8 value);
extern void InvertPad(u8 pad, int key);
extern bool RevertPad(u8 index);
extern void ResetPad( u8 pad, int key);
extern void ConfigurePad( u8 pad, int index, int value);
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_L_LEFT:
case PAD_L_UP:
Analog::ConfigurePad(Analog::AnalogToPad(i), pad, DEF_VALUE);
Analog::ConfigurePad(pad, Analog::AnalogToPad(i), DEF_VALUE);
break;
case PAD_R_RIGHT:
case PAD_R_DOWN:
case PAD_L_RIGHT:
case PAD_L_DOWN:
Analog::ConfigurePad(Analog::AnalogToPad(i), pad, -DEF_VALUE);
Analog::ConfigurePad(pad, Analog::AnalogToPad(i), -DEF_VALUE);
break;
}
i += 0xff00;
@ -123,7 +123,7 @@ void PollForX11KeyboardInput(int pad)
// Analog Controls.
if ((i > PAD_RY) && (i <= PAD_R_LEFT))
{
Analog::ResetPad(Analog::AnalogToPad(i), pad);
Analog::ResetPad(pad, Analog::AnalogToPad(i));
i += 0xff00;
}

View File

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