From e152d3064ad9f3cff27cc86a29cc0dde244d2389 Mon Sep 17 00:00:00 2001 From: IoI_xD Date: Tue, 10 Mar 2026 20:23:35 -0700 Subject: [PATCH] successful input --- main.c | 104 +++++++++++++++++++++++++++++++++++++++------------------ 1 file changed, 71 insertions(+), 33 deletions(-) diff --git a/main.c b/main.c index 6f4afd5..ee870d9 100644 --- a/main.c +++ b/main.c @@ -25,6 +25,7 @@ static struct gb_s gb; static struct priv_t priv; static void key_pressed(MwWidget handle, void *client, void *user); +static void key_released(MwWidget handle, void *client, void *user); int mfb_open(const char *title, int width, int height) { int depth, i, formatCount, convDepth = -1; @@ -38,6 +39,7 @@ int mfb_open(const char *title, int width, int height) { MwCreateWidget(MwImageClass, "fb", priv.win, 0, 0, width, height); MwAddUserHandler(priv.win, MwNkeyHandler, key_pressed, NULL); + MwAddUserHandler(priv.win, MwNkeyReleaseHandler, key_released, NULL); priv.px = NULL; @@ -45,9 +47,8 @@ int mfb_open(const char *title, int width, int height) { } int mfb_update(void *buffer) { - if (MwPending(priv.win)) { - MwStep(priv.win); - } + MwPending(priv.win); + MwStep(priv.win); if (priv.px == NULL) { priv.px = MwLoadRaw(priv.win, buffer, LCD_WIDTH, LCD_HEIGHT); @@ -66,45 +67,82 @@ static void key_pressed(MwWidget handle, void *user, void *client) { (void)handle; (void)user; - // int k = *(int *)client; + int k = *(int *)client; - printf("%p\n", client); + switch (k) { + case MwLLKeyEnter: + gb.direct.joypad &= ~JOYPAD_START; + break; - return; - /* - switch (k) { - case MwLLKeyEnter: - gb.direct.joypad &= ~JOYPAD_START; - break; + case MwLLKeyBackSpace: + gb.direct.joypad &= ~JOYPAD_SELECT; + break; - case MwLLKeyBackSpace: - gb.direct.joypad &= ~JOYPAD_SELECT; - break; + case 'z': + gb.direct.joypad &= ~JOYPAD_A; + break; - case 'z': - gb.direct.joypad &= ~JOYPAD_A; - break; + case 'x': + gb.direct.joypad &= ~JOYPAD_B; + break; - case 'x': - gb.direct.joypad &= ~JOYPAD_B; - break; + case MwLLKeyUp: + gb.direct.joypad &= ~JOYPAD_UP; + break; - case MwLLKeyUp: - gb.direct.joypad &= ~JOYPAD_UP; - break; + case MwLLKeyRight: + gb.direct.joypad &= ~JOYPAD_RIGHT; + break; - case MwLLKeyRight: - gb.direct.joypad &= ~JOYPAD_RIGHT; - break; + case MwLLKeyDown: + gb.direct.joypad &= ~JOYPAD_DOWN; + break; - case MwLLKeyDown: - gb.direct.joypad &= ~JOYPAD_DOWN; - break; + case MwLLKeyLeft: + gb.direct.joypad &= ~JOYPAD_LEFT; + break; + } +} - case MwLLKeyLeft: - gb.direct.joypad &= ~JOYPAD_LEFT; - break; - }*/ +static void key_released(MwWidget handle, void *user, void *client) { + (void)handle; + (void)user; + + int k = *(int *)client; + + switch (k) { + case MwLLKeyEnter: + gb.direct.joypad |= JOYPAD_START; + break; + + case MwLLKeyBackSpace: + gb.direct.joypad |= JOYPAD_SELECT; + break; + + case 'z': + gb.direct.joypad |= JOYPAD_A; + break; + + case 'x': + gb.direct.joypad |= JOYPAD_B; + break; + + case MwLLKeyUp: + gb.direct.joypad |= JOYPAD_UP; + break; + + case MwLLKeyRight: + gb.direct.joypad |= JOYPAD_RIGHT; + break; + + case MwLLKeyDown: + gb.direct.joypad |= JOYPAD_DOWN; + break; + + case MwLLKeyLeft: + gb.direct.joypad |= JOYPAD_LEFT; + break; + } } /**