code cleanup

This commit is contained in:
ekeeke31 2010-02-12 13:28:28 +00:00
parent 0f1850ec6e
commit cea89b4531
3 changed files with 229 additions and 160 deletions

View File

@ -95,8 +95,10 @@ static inline void lightgun_update(int num)
H-Counter range is approx. 292 pixel clocks H-Counter range is approx. 292 pixel clocks
*/ */
hc_latch = 0x100; hc_latch = 0x100;
if (reg[12] & 1) hc_latch |= hc_320[((input.analog[num][0] * 290) / (2 * 320) + input.x_offset) % 210]; if (reg[12] & 1)
else hc_latch |= hc_256[(input.analog[num][0] / 2 + input.x_offset)%171]; hc_latch |= hc_320[((input.analog[num][0] * 290) / (2 * 320) + input.x_offset) % 210];
else
hc_latch |= hc_256[(input.analog[num][0] / 2 + input.x_offset)%171];
} }
} }
} }

View File

@ -179,54 +179,83 @@ static void pad_update(s8 chan, u8 i)
memcpy(pad_keymap, config.pad_keymap[chan], MAX_KEYS * sizeof(u16)); memcpy(pad_keymap, config.pad_keymap[chan], MAX_KEYS * sizeof(u16));
/* Generic buttons */ /* Generic buttons */
if (p & pad_keymap[KEY_BUTTONA]) input.pad[i] |= INPUT_A; if (p & pad_keymap[KEY_BUTTONA])
if (p & pad_keymap[KEY_BUTTONB]) input.pad[i] |= INPUT_B; input.pad[i] |= INPUT_A;
if (p & pad_keymap[KEY_BUTTONC]) input.pad[i] |= INPUT_C; if (p & pad_keymap[KEY_BUTTONB])
if (p & pad_keymap[KEY_BUTTONX]) input.pad[i] |= INPUT_X; input.pad[i] |= INPUT_B;
if (p & pad_keymap[KEY_BUTTONY]) input.pad[i] |= INPUT_Y; if (p & pad_keymap[KEY_BUTTONC])
if (p & pad_keymap[KEY_BUTTONZ]) input.pad[i] |= INPUT_Z; input.pad[i] |= INPUT_C;
if (p & pad_keymap[KEY_START]) input.pad[i] |= INPUT_START; if (p & pad_keymap[KEY_BUTTONX])
input.pad[i] |= INPUT_X;
if (p & pad_keymap[KEY_BUTTONY])
input.pad[i] |= INPUT_Y;
if (p & pad_keymap[KEY_BUTTONZ])
input.pad[i] |= INPUT_Z;
if (p & pad_keymap[KEY_START])
input.pad[i] |= INPUT_START;
/* Analog devices */ /* Emulated device specific */
if (input.dev[i] == DEVICE_LIGHTGUN) switch (input.dev[i])
{ {
/* Lightgun cursor position (x,y) */ case DEVICE_LIGHTGUN:
input.analog[i-4][0] += x / ANALOG_SENSITIVITY; {
input.analog[i-4][1] -= y / ANALOG_SENSITIVITY; /* Lightgun cursor position (x,y) */
if (input.analog[i-4][0] < 0) input.analog[i-4][0] = 0; input.analog[i-4][0] += x / ANALOG_SENSITIVITY;
else if (input.analog[i-4][0] > bitmap.viewport.w) input.analog[i-4][0] = bitmap.viewport.w; input.analog[i-4][1] -= y / ANALOG_SENSITIVITY;
if (input.analog[i-4][1] < 0) input.analog[i-4][1] = 0; if (input.analog[i-4][0] < 0)
else if (input.analog[i-4][1] > bitmap.viewport.h) input.analog[i-4][1] = bitmap.viewport.h; input.analog[i-4][0] = 0;
} else if (input.analog[i-4][0] > bitmap.viewport.w)
else if ((system_hw == SYSTEM_PICO) && (i == 0)) input.analog[i-4][0] = bitmap.viewport.w;
{ if (input.analog[i-4][1] < 0)
/* PEN tablet position (x,y) */ input.analog[i-4][1] = 0;
input.analog[0][0] += x / ANALOG_SENSITIVITY; else if (input.analog[i-4][1] > bitmap.viewport.h)
input.analog[0][1] -= y / ANALOG_SENSITIVITY; input.analog[i-4][1] = bitmap.viewport.h;
if (input.analog[0][0] < 0x17c) input.analog[0][0] = 0x17c; break;
else if (input.analog[0][0] > 0x3c) input.analog[0][0] = 0x3c; }
if (input.analog[0][1] < 0x1fc) input.analog[0][1] = 0x1fc;
else if (input.analog[0][1] > 0x3f3) input.analog[0][1] = 0x3f3;
}
else if (input.dev[i] == DEVICE_MOUSE)
{
/* MOUSE relative movement (-255,255) */
input.analog[2][0] = (x / ANALOG_SENSITIVITY) * 2;
input.analog[2][1] = (y / ANALOG_SENSITIVITY) * 2;
if (config.invert_mouse) input.analog[2][1] = -input.analog[2][1];
}
/* Gamepad device */ case DEVICE_MOUSE:
else {
{ /* MOUSE relative movement (-255,255) */
if ((p & PAD_BUTTON_UP) || (y > ANALOG_SENSITIVITY)) input.pad[i] |= INPUT_UP; input.analog[2][0] = (x / ANALOG_SENSITIVITY) * 2;
else if ((p & PAD_BUTTON_DOWN) || (y < -ANALOG_SENSITIVITY)) input.pad[i] |= INPUT_DOWN; input.analog[2][1] = (y / ANALOG_SENSITIVITY) * 2;
if ((p & PAD_BUTTON_LEFT) || (x < -ANALOG_SENSITIVITY)) input.pad[i] |= INPUT_LEFT; if (config.invert_mouse)
else if ((p & PAD_BUTTON_RIGHT) || (x > ANALOG_SENSITIVITY)) input.pad[i] |= INPUT_RIGHT; input.analog[2][1] = -input.analog[2][1];
break;
}
default:
{
if (system_hw != SYSTEM_PICO)
{
/* gamepad */
if ((p & PAD_BUTTON_UP) || (y > ANALOG_SENSITIVITY))
input.pad[i] |= INPUT_UP;
else if ((p & PAD_BUTTON_DOWN) || (y < -ANALOG_SENSITIVITY))
input.pad[i] |= INPUT_DOWN;
if ((p & PAD_BUTTON_LEFT) || (x < -ANALOG_SENSITIVITY))
input.pad[i] |= INPUT_LEFT;
else if ((p & PAD_BUTTON_RIGHT) || (x > ANALOG_SENSITIVITY))
input.pad[i] |= INPUT_RIGHT;
}
else if (!i)
{
/* PICO PEN tablet position (x,y) */
input.analog[0][0] += x / ANALOG_SENSITIVITY;
input.analog[0][1] -= y / ANALOG_SENSITIVITY;
if (input.analog[0][0] < 0x17c)
input.analog[0][0] = 0x17c;
else if (input.analog[0][0] > 0x3c)
input.analog[0][0] = 0x3c;
if (input.analog[0][1] < 0x1fc)
input.analog[0][1] = 0x1fc;
else if (input.analog[0][1] > 0x3f3)
input.analog[0][1] = 0x3f3;
}
break;
}
} }
} }
/***************************************************************************************/ /***************************************************************************************/
/* Wii WPAD support */ /* Wii WPAD support */
/***************************************************************************************/ /***************************************************************************************/
@ -434,10 +463,13 @@ static void wpad_update(s8 chan, u8 i, u32 exp)
/* WPAD data */ /* WPAD data */
WPADData *data = WPAD_Data(chan); WPADData *data = WPAD_Data(chan);
/* WPAD held buttons */ /* WPAD status */
s8 x = 0;
s8 y = 0;
u32 p = data->btns_h; u32 p = data->btns_h;
u32 u = data->btns_u;
if ((p & WPAD_BUTTON_HOME) || (p & WPAD_CLASSIC_BUTTON_HOME)) if ((u & WPAD_BUTTON_HOME) || (u & WPAD_CLASSIC_BUTTON_HOME))
{ {
/* Menu Request */ /* Menu Request */
ConfigRequested = 1; ConfigRequested = 1;
@ -454,146 +486,183 @@ static void wpad_update(s8 chan, u8 i, u32 exp)
u32 *wpad_keymap = config.wpad_keymap[exp + (3 * chan)]; u32 *wpad_keymap = config.wpad_keymap[exp + (3 * chan)];
/* Generic buttons */ /* Generic buttons */
if (p & wpad_keymap[KEY_BUTTONA]) input.pad[i] |= INPUT_A; if (p & wpad_keymap[KEY_BUTTONA])
if (p & wpad_keymap[KEY_BUTTONB]) input.pad[i] |= INPUT_B; input.pad[i] |= INPUT_A;
if (p & wpad_keymap[KEY_BUTTONC]) input.pad[i] |= INPUT_C; if (p & wpad_keymap[KEY_BUTTONB])
if (p & wpad_keymap[KEY_BUTTONX]) input.pad[i] |= INPUT_X; input.pad[i] |= INPUT_B;
if (p & wpad_keymap[KEY_BUTTONY]) input.pad[i] |= INPUT_Y; if (p & wpad_keymap[KEY_BUTTONC])
if (p & wpad_keymap[KEY_BUTTONZ]) input.pad[i] |= INPUT_Z; input.pad[i] |= INPUT_C;
if (p & wpad_keymap[KEY_START]) input.pad[i] |= INPUT_START; if (p & wpad_keymap[KEY_BUTTONX])
if (p & wpad_keymap[KEY_MODE]) input.pad[i] |= INPUT_MODE; input.pad[i] |= INPUT_X;
if (p & wpad_keymap[KEY_BUTTONY])
input.pad[i] |= INPUT_Y;
if (p & wpad_keymap[KEY_BUTTONZ])
input.pad[i] |= INPUT_Z;
if (p & wpad_keymap[KEY_START])
input.pad[i] |= INPUT_START;
if (p & wpad_keymap[KEY_MODE])
input.pad[i] |= INPUT_MODE;
/* Analog sticks */ /* Analog sticks */
s8 x = 0;
s8 y = 0;
if (exp != WPAD_EXP_NONE) if (exp != WPAD_EXP_NONE)
{ {
x = WPAD_StickX(data,0); x = WPAD_StickX(data,0);
y = WPAD_StickY(data,0); y = WPAD_StickY(data,0);
} }
/* IR structure */ /* Emulated device specific */
struct ir_t ir; switch (input.dev[i])
/* Analog devices */
if (input.dev[i] == DEVICE_LIGHTGUN)
{ {
/* Lightgun cursor position (x,y) */ case DEVICE_LIGHTGUN:
if (x || y)
{ {
/* analog stick relative positions */ /* Lightgun cursor position (x,y) */
input.analog[i-4][0] += x / ANALOG_SENSITIVITY; if (x || y)
input.analog[i-4][1] -= y / ANALOG_SENSITIVITY;
if (input.analog[i-4][0] < 0) input.analog[i-4][0] = 0;
else if (input.analog[i-4][0] > bitmap.viewport.w) input.analog[i-4][0] = bitmap.viewport.w;
if (input.analog[i-4][1] < 0) input.analog[i-4][1] = 0;
else if (input.analog[i-4][1] > bitmap.viewport.h) input.analog[i-4][1] = bitmap.viewport.h;
}
if (exp != WPAD_EXP_CLASSIC)
{
/* IR tracking */
WPAD_IR(chan, &ir);
if (ir.valid)
{ {
input.analog[i-4][0] = (ir.x * bitmap.viewport.w) / 640; /* analog stick absolute positions */
input.analog[i-4][1] = (ir.y * bitmap.viewport.h) / 480; input.analog[i-4][0] += x / ANALOG_SENSITIVITY;
input.analog[i-4][1] -= y / ANALOG_SENSITIVITY;
/* default button */ if (input.analog[i-4][0] < 0)
if (p & WPAD_BUTTON_B) input.pad[i] |= INPUT_B; input.analog[i-4][0] = 0;
else if (input.analog[i-4][0] > bitmap.viewport.w)
input.analog[i-4][0] = bitmap.viewport.w;
if (input.analog[i-4][1] < 0)
input.analog[i-4][1] = 0;
else if (input.analog[i-4][1] > bitmap.viewport.h)
input.analog[i-4][1] = bitmap.viewport.h;
} }
}
}
else if ((system_hw == SYSTEM_PICO) && (i == 0))
{
/* PEN tablet position (x,y) */
if (x || y)
{
/* analog stick relative positions */
input.analog[0][0] += x / ANALOG_SENSITIVITY;
input.analog[0][1] -= y / ANALOG_SENSITIVITY;
if (input.analog[0][0] < 0x17c) input.analog[0][0] = 0x17c;
else if (input.analog[0][0] > 0x3c) input.analog[0][0] = 0x3c;
if (input.analog[0][1] < 0x1fc) input.analog[0][1] = 0x1fc;
else if (input.analog[0][1] > 0x3f3) input.analog[0][1] = 0x3f3;
}
if (exp != WPAD_EXP_CLASSIC) /* Wiimote IR */
{ if (exp != WPAD_EXP_CLASSIC)
/* IR tracking */
WPAD_IR(chan, &ir);
if (ir.valid)
{ {
input.analog[0][0] = 0x3c + (ir.x * (0x17c - 0x3c + 1)) / 640; struct ir_t ir;
input.analog[0][1] = 0x1fc + (ir.y * (0x3f3 - 0x1fc + 1)) / 480; WPAD_IR(chan, &ir);
if (ir.valid)
{
input.analog[i-4][0] = (ir.x * bitmap.viewport.w) / 640;
input.analog[i-4][1] = (ir.y * bitmap.viewport.h) / 480;
/* default button */ /* use default trigger button */
if (p & WPAD_BUTTON_B) input.pad[i] |= INPUT_B; if (p & WPAD_BUTTON_B) input.pad[i] |= INPUT_B;
}
} }
}
} break;
else if (input.dev[i] == DEVICE_MOUSE)
{
/* Mouse relative movement (-255,255) */
if (x || y)
{
/* analog stick relative positions */
input.analog[2][0] = (x * 2) / ANALOG_SENSITIVITY;
input.analog[2][1] = -(y * 2) / ANALOG_SENSITIVITY;
} }
if (exp != WPAD_EXP_CLASSIC) case DEVICE_MOUSE:
{ {
/* IR tracking */ /* Mouse relative movement (-255,255) */
WPAD_IR(chan, &ir); if (x || y)
if (ir.valid)
{ {
/* calculate mouse values */ /* analog stick relative positions */
input.analog[2][0] = (ir.x - old_x); input.analog[2][0] = (x * 2) / ANALOG_SENSITIVITY;
input.analog[2][1] = (ir.y - old_y); input.analog[2][1] = -(y * 2) / ANALOG_SENSITIVITY;
old_x = ir.x; }
old_y = ir.y;
if (input.analog[2][0] > 255) input.analog[2][0] = 255; /* Wiimote IR */
else if (input.analog[2][0] < -255) input.analog[2][0] = -255; if (exp != WPAD_EXP_CLASSIC)
if (input.analog[2][1] > 255) input.analog[2][1] = 255; {
else if (input.analog[2][1] < -255) input.analog[2][1] = -255; struct ir_t ir;
WPAD_IR(chan, &ir);
/* default button */ if (ir.valid)
if (p & WPAD_BUTTON_B) input.pad[i] |= INPUT_B; {
/* calculate mouse values (FIXME) */
input.analog[2][0] = (ir.x - old_x);
input.analog[2][1] = (ir.y - old_y);
old_x = ir.x;
old_y = ir.y;
if (input.analog[2][0] > 255)
input.analog[2][0] = 255;
else if (input.analog[2][0] < -255)
input.analog[2][0] = -255;
if (input.analog[2][1] > 255) input.analog[2][1] = 255;
else if (input.analog[2][1] < -255) input.analog[2][1] = -255;
/* use default trigger button */
if (p & WPAD_BUTTON_B)
input.pad[i] |= INPUT_B;
}
} }
}
#ifdef USB_MOUSE #ifdef USB_MOUSE
if (MOUSE_IsConnected()) /* USB mouse support (NOT WORKING) */
{ if (MOUSE_IsConnected())
/* USB Mouse support */ {
mouse_event event; mouse_event event;
MOUSE_GetEvent(&event); MOUSE_GetEvent(&event);
MOUSE_FlushEvents(); MOUSE_FlushEvents();
/* relative X/Y position: (-128;+127) -> (-255;+255) */ /* relative X/Y position: (-128;+127) -> (-255;+255) */
if (event.rx) input.analog[2][0] = (event.rx * 2) + 1; if (event.rx)
else input.analog[2][0] = 0; input.analog[2][0] = (event.rx * 2) + 1;
if (event.ry) input.analog[2][1] = (event.ry * 2) + 1; else
else input.analog[2][1] = 0; input.analog[2][0] = 0;
if (event.ry)
input.analog[2][1] = (event.ry * 2) + 1;
else
input.analog[2][1] = 0;
/* buttons pressed */ /* pressed buttons */
if (event.button & 1) input.pad[i] |= INPUT_A; if (event.button & 1)
if (event.button & 2) input.pad[i] |= INPUT_B; input.pad[i] |= INPUT_A;
} if (event.button & 2)
input.pad[i] |= INPUT_B;
}
#endif #endif
/* Invert Y coordinate */ /* Invert Y coordinate */
if (!config.invert_mouse) input.analog[2][1] = -input.analog[2][1]; if (!config.invert_mouse)
} input.analog[2][1] = -input.analog[2][1];
/* Gamepad device */ break;
else }
{
if ((p & wpad_dirmap[exp][PAD_UP]) || (y > ANALOG_SENSITIVITY)) input.pad[i] |= INPUT_UP; default:
else if ((p & wpad_dirmap[exp][PAD_DOWN]) || (y < -ANALOG_SENSITIVITY)) input.pad[i] |= INPUT_DOWN; {
if ((p & wpad_dirmap[exp][PAD_LEFT]) || (x < -ANALOG_SENSITIVITY)) input.pad[i] |= INPUT_LEFT; if (system_hw != SYSTEM_PICO)
else if ((p & wpad_dirmap[exp][PAD_RIGHT]) || (x > ANALOG_SENSITIVITY)) input.pad[i] |= INPUT_RIGHT; {
/* gamepad */
if ((p & wpad_dirmap[exp][PAD_UP]) || (y > ANALOG_SENSITIVITY))
input.pad[i] |= INPUT_UP;
else if ((p & wpad_dirmap[exp][PAD_DOWN]) || (y < -ANALOG_SENSITIVITY))
input.pad[i] |= INPUT_DOWN;
if ((p & wpad_dirmap[exp][PAD_LEFT]) || (x < -ANALOG_SENSITIVITY))
input.pad[i] |= INPUT_LEFT;
else if ((p & wpad_dirmap[exp][PAD_RIGHT]) || (x > ANALOG_SENSITIVITY))
input.pad[i] |= INPUT_RIGHT;
}
else if (!i)
{
/* PICO PEN tablet position (x,y) */
if (x || y)
{
/* analog stick relative positions */
input.analog[0][0] += x / ANALOG_SENSITIVITY;
input.analog[0][1] -= y / ANALOG_SENSITIVITY;
if (input.analog[0][0] < 0x17c) input.analog[0][0] = 0x17c;
else if (input.analog[0][0] > 0x3c) input.analog[0][0] = 0x3c;
if (input.analog[0][1] < 0x1fc) input.analog[0][1] = 0x1fc;
else if (input.analog[0][1] > 0x3f3) input.analog[0][1] = 0x3f3;
}
/* Wiimote IR */
if (exp != WPAD_EXP_CLASSIC)
{
struct ir_t ir;
WPAD_IR(chan, &ir);
if (ir.valid)
{
input.analog[0][0] = 0x3c + (ir.x * (0x17c - 0x3c + 1)) / 640;
input.analog[0][1] = 0x1fc + (ir.y * (0x3f3 - 0x1fc + 1)) / 480;
/* use default trigger button */
if (p & WPAD_BUTTON_B)
input.pad[i] |= INPUT_B;
}
}
}
break;
}
} }
} }
#endif #endif

View File

@ -169,8 +169,6 @@ u32 frameticker = 0;
int main (int argc, char *argv[]) int main (int argc, char *argv[])
{ {
CAST_Init();
#ifdef HW_RVL #ifdef HW_RVL
/* initialize DVDX */ /* initialize DVDX */
DI_Init(); DI_Init();