aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/libui_sdl/main.cpp32
1 files changed, 31 insertions, 1 deletions
diff --git a/src/libui_sdl/main.cpp b/src/libui_sdl/main.cpp
index 52c8117..5cbe750 100644
--- a/src/libui_sdl/main.cpp
+++ b/src/libui_sdl/main.cpp
@@ -41,6 +41,8 @@ int EmuRunning;
SDL_mutex* ScreenMutex;
uiDrawBitmap* ScreenBitmap = NULL;
+bool Touching = false;
+
void AudioCallback(void* data, Uint8* stream, int len)
{
@@ -51,6 +53,8 @@ int EmuThreadFunc(void* burp)
{
NDS::Init();
+ Touching = false;
+
// DS:
// 547.060546875 samples per frame
// 32823.6328125 samples per second
@@ -173,7 +177,33 @@ void OnAreaMouseEvent(uiAreaHandler* handler, uiArea* area, uiAreaMouseEvent* ev
{
int x = (int)evt->X;
int y = (int)evt->Y;
- printf("mouse: %08X %d,%d\n", (u32)evt->Held1To64, x, y);
+
+ if (Touching && (evt->Up == 1))
+ {
+ Touching = false;
+ NDS::ReleaseKey(16+6);
+ NDS::ReleaseScreen();
+ }
+ else if (!Touching && (evt->Down == 1) && (y >= 192))
+ {
+ Touching = true;
+ NDS::PressKey(16+6);
+ // TODO: scaling/offset as needed
+ }
+
+ if (Touching)
+ {
+ // TODO: scaling, here too
+ y -= 192;
+
+ // clamp
+ if (x < 0) x = 0;
+ else if (x > 255) x = 255;
+ if (y < 0) y = 0;
+ else if (y > 191) y = 191;
+
+ NDS::TouchScreen(x, y);
+ }
}
void OnAreaMouseCrossed(uiAreaHandler* handler, uiArea* area, int left)