X-Git-Url: http://git.maemo.org/git/?a=blobdiff_plain;f=platform%2Fsdli.cpp;h=21adc456c3c011ba0fd2fc44afe98aa88dea7b75;hb=604f7846ec8dfbeb9a371e55905fd2d252379131;hp=7553c8a9a7048f8fb86e2dee6b54c5103c8168f2;hpb=6a40ae05c3981b97147232eeb8bf3947cce72326;p=drnoksnes diff --git a/platform/sdli.cpp b/platform/sdli.cpp index 7553c8a..21adc45 100644 --- a/platform/sdli.cpp +++ b/platform/sdli.cpp @@ -6,6 +6,10 @@ #include "display.h" #include "sdlv.h" // Dispatching video-related events +#if CONF_ZEEMOTE +#include "zeemote.h" +#endif + struct TouchButton { unsigned short mask; unsigned short x, y; @@ -14,27 +18,33 @@ struct TouchButton { double fw, fh; }; -#define TOUCH_BUTTON_INITIALIZER(name, x, y, w, h) \ - {SNES_##name##_MASK, 0, 0, 0, 0, x, y, w, h} - #define kCornerButtonWidth (0.375) #define kCornerButtonHeight (0.0833333333334) #define kBigButtonWidth (0.125) #define kBigButtonHeight (0.2777777777778) static TouchButton touchbuttons[] = { - TOUCH_BUTTON_INITIALIZER(TL, 0.0, 0.0, kCornerButtonWidth, kCornerButtonHeight), - TOUCH_BUTTON_INITIALIZER(TR, 0.625, 0.0, kCornerButtonWidth, kCornerButtonHeight), - TOUCH_BUTTON_INITIALIZER(UP, kBigButtonWidth, kCornerButtonHeight, kBigButtonWidth, kBigButtonHeight), - TOUCH_BUTTON_INITIALIZER(LEFT, 0.0, kCornerButtonHeight + kBigButtonHeight, kBigButtonWidth, kBigButtonHeight), - TOUCH_BUTTON_INITIALIZER(RIGHT, 2.0 * kBigButtonWidth, kCornerButtonHeight + kBigButtonHeight, kBigButtonWidth, kBigButtonHeight), - TOUCH_BUTTON_INITIALIZER(DOWN, kBigButtonWidth, 1.0 - (kCornerButtonHeight + kBigButtonHeight), kBigButtonWidth, kBigButtonHeight), - TOUCH_BUTTON_INITIALIZER(SELECT, 0.0, 1.0 - kCornerButtonHeight, kCornerButtonWidth, kCornerButtonHeight), - TOUCH_BUTTON_INITIALIZER(X, 1.0 - 2.0 * kBigButtonWidth, kCornerButtonHeight, kBigButtonWidth, kBigButtonHeight), - TOUCH_BUTTON_INITIALIZER(Y, 1.0 - 3.0 * kBigButtonWidth, kCornerButtonHeight + kBigButtonHeight, kBigButtonWidth, kBigButtonHeight), - TOUCH_BUTTON_INITIALIZER(A, 1.0 - kBigButtonWidth, kCornerButtonHeight + kBigButtonHeight, kBigButtonWidth, kBigButtonHeight), - TOUCH_BUTTON_INITIALIZER(B, 1.0 - 2.0 * kBigButtonWidth, 1.0 - (kCornerButtonHeight + kBigButtonHeight), kBigButtonWidth, kBigButtonHeight), - TOUCH_BUTTON_INITIALIZER(START, 1.0 - kCornerButtonWidth, 1.0 - kCornerButtonHeight, kCornerButtonWidth, kCornerButtonHeight), +#define TB(actions, x, y, w, h) \ + {actions, 0, 0, 0, 0, x, y, w, h} +#define P(x) SNES_##x##_MASK + TB(P(TL), 0.0, 0.0, kCornerButtonWidth, kCornerButtonHeight), + TB(P(TR), 0.625, 0.0, kCornerButtonWidth, kCornerButtonHeight), + TB(P(LEFT) | P(UP), 0.0, kCornerButtonHeight, kBigButtonWidth, kBigButtonHeight), + TB(P(UP), kBigButtonWidth, kCornerButtonHeight, kBigButtonWidth, kBigButtonHeight), + TB(P(RIGHT) | P(UP), 2.0 * kBigButtonWidth, kCornerButtonHeight, kBigButtonWidth, kBigButtonHeight), + TB(P(LEFT), 0.0, kCornerButtonHeight + kBigButtonHeight, kBigButtonWidth, kBigButtonHeight), + TB(P(RIGHT), 2.0 * kBigButtonWidth, kCornerButtonHeight + kBigButtonHeight, kBigButtonWidth, kBigButtonHeight), + TB(P(LEFT) | P(DOWN), 0, 1.0 - (kCornerButtonHeight + kBigButtonHeight), kBigButtonWidth, kBigButtonHeight), + TB(P(DOWN), kBigButtonWidth, 1.0 - (kCornerButtonHeight + kBigButtonHeight), kBigButtonWidth, kBigButtonHeight), + TB(P(RIGHT) | P(DOWN), 2.0 * kBigButtonWidth, 1.0 - (kCornerButtonHeight + kBigButtonHeight), kBigButtonWidth, kBigButtonHeight), + TB(P(SELECT), 0.0, 1.0 - kCornerButtonHeight, kCornerButtonWidth, kCornerButtonHeight), + TB(P(X), 1.0 - 2.0 * kBigButtonWidth, kCornerButtonHeight, kBigButtonWidth, kBigButtonHeight), + TB(P(Y), 1.0 - 3.0 * kBigButtonWidth, kCornerButtonHeight + kBigButtonHeight, kBigButtonWidth, kBigButtonHeight), + TB(P(A), 1.0 - kBigButtonWidth, kCornerButtonHeight + kBigButtonHeight, kBigButtonWidth, kBigButtonHeight), + TB(P(B), 1.0 - 2.0 * kBigButtonWidth, 1.0 - (kCornerButtonHeight + kBigButtonHeight), kBigButtonWidth, kBigButtonHeight), + TB(P(START), 1.0 - kCornerButtonWidth, 1.0 - kCornerButtonHeight, kCornerButtonWidth, kCornerButtonHeight), +#undef P +#undef TB }; static TouchButton* current = 0; @@ -213,6 +223,11 @@ void S9xProcessEvents(bool block) { SDL_Event event; +#if CONF_ZEEMOTE + // Wheter blocking or non blocking, poll zeemotes now. + ZeeRead(joypads); +#endif + if (block) { SDL_WaitEvent(&event); processEvent(event); @@ -251,6 +266,10 @@ void S9xInitInputDevices() } printf("\n"); +#if CONF_ZEEMOTE + ZeeInit(); +#endif + // TODO Non-awful mouse support, Superscope S9xInputScreenChanged(); @@ -262,6 +281,9 @@ void S9xDeinitInputDevices() joypads[1] = 0; mouse.enabled = false; mouse.pressed = false; +#if CONF_ZEEMOTE + ZeeQuit(); +#endif } void S9xInputScreenChanged()