summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFranklin Wei <git@fwei.tk>2017-09-30 20:50:33 -0400
committerFranklin Wei <git@fwei.tk>2017-09-30 20:50:33 -0400
commit23e7d0ef19dc82e39f249a4cd65ec797a6c06aba (patch)
tree73d7b786e6255ae703786f98c3d3df0c5341a5dd
parentbb55fceb7020e3235d4b5c33976d9b9d10dc091a (diff)
downloadrockbox-23e7d0ef19dc82e39f249a4cd65ec797a6c06aba.tar.gz
rockbox-23e7d0ef19dc82e39f249a4cd65ec797a6c06aba.zip
xworld: support diagonal buttons on Zen X-Fi
Change-Id: Ia738ecd2a39c0c0772d6f939d549dd5d0eda055e
-rw-r--r--apps/plugins/lib/keymaps.h11
-rw-r--r--apps/plugins/xworld/resource.c2
-rw-r--r--apps/plugins/xworld/sys.c6
-rw-r--r--apps/plugins/xworld/sys.h6
4 files changed, 19 insertions, 6 deletions
diff --git a/apps/plugins/lib/keymaps.h b/apps/plugins/lib/keymaps.h
index 84041cacd7..2c54aebccb 100644
--- a/apps/plugins/lib/keymaps.h
+++ b/apps/plugins/lib/keymaps.h
@@ -68,12 +68,23 @@
68#define BTN_RIGHT BUTTON_RIGHT 68#define BTN_RIGHT BUTTON_RIGHT
69 69
70#if (CONFIG_KEYPAD == SANSA_FUZEPLUS_PAD) 70#if (CONFIG_KEYPAD == SANSA_FUZEPLUS_PAD)
71#define BTN_HAVE_DIAGONAL
71#define BTN_UP_LEFT BUTTON_BACK 72#define BTN_UP_LEFT BUTTON_BACK
72#define BTN_UP_RIGHT BUTTON_PLAYPAUSE 73#define BTN_UP_RIGHT BUTTON_PLAYPAUSE
73#define BTN_DOWN_LEFT BUTTON_BOTTOMLEFT 74#define BTN_DOWN_LEFT BUTTON_BOTTOMLEFT
74#define BTN_DOWN_RIGHT BUTTON_BOTTOMRIGHT 75#define BTN_DOWN_RIGHT BUTTON_BOTTOMRIGHT
75#endif 76#endif
76 77
78/* X-Fi doesn't have a separate *_PAD macro */
79#ifdef CREATIVE_ZENXFI
80#define BTN_HAVE_DIAGONAL
81#define BTN_DOWN_LEFT BUTTON_BOTTOMLEFT
82#define BTN_DOWN_RIGHT BUTTON_BOTTOMRIGHT
83#define BTN_UP_LEFT BUTTON_TOPLEFT
84#define BTN_UP_RIGHT BUTTON_TOPRIGHT
85#endif
86
87
77#if (CONFIG_KEYPAD == HM60X_PAD) 88#if (CONFIG_KEYPAD == HM60X_PAD)
78#define BTN_FIRE BUTTON_POWER 89#define BTN_FIRE BUTTON_POWER
79#define BTN_PAUSE BUTTON_SELECT 90#define BTN_PAUSE BUTTON_SELECT
diff --git a/apps/plugins/xworld/resource.c b/apps/plugins/xworld/resource.c
index 4bd93f0616..29b875f9af 100644
--- a/apps/plugins/xworld/resource.c
+++ b/apps/plugins/xworld/resource.c
@@ -371,7 +371,7 @@ void res_allocMemBlock(struct Resource* res) {
371 res->sys->membuf = res->_memPtrStart + ( MEM_BLOCK_SIZE + (4 * VID_PAGE_SIZE) + 320 * 200 * sizeof(fb_data)); 371 res->sys->membuf = res->_memPtrStart + ( MEM_BLOCK_SIZE + (4 * VID_PAGE_SIZE) + 320 * 200 * sizeof(fb_data));
372 res->sys->bytes_left = sz - (MEM_BLOCK_SIZE + (4 * VID_PAGE_SIZE) + 320 * 200 * sizeof(fb_data)); 372 res->sys->bytes_left = sz - (MEM_BLOCK_SIZE + (4 * VID_PAGE_SIZE) + 320 * 200 * sizeof(fb_data));
373 373
374 debug(DBG_RES, "audiobuf is %d bytes in size", sz); 374 debug(DBG_RES, "audiobuf is %d bytes in size (%d bytes left)", sz, res->sys->bytes_left);
375 375
376 res->_scriptBakPtr = res->_scriptCurPtr = res->_memPtrStart; 376 res->_scriptBakPtr = res->_scriptCurPtr = res->_memPtrStart;
377 res->_vidBakPtr = res->_vidCurPtr = res->_memPtrStart + MEM_BLOCK_SIZE - 0x800 * 16; //0x800 = 2048, so we have 32KB free for vidBack and vidCur 377 res->_vidBakPtr = res->_vidCurPtr = res->_memPtrStart + MEM_BLOCK_SIZE - 0x800 * 16; //0x800 = 2048, so we have 32KB free for vidBack and vidCur
diff --git a/apps/plugins/xworld/sys.c b/apps/plugins/xworld/sys.c
index 1a3d47d307..a240c75924 100644
--- a/apps/plugins/xworld/sys.c
+++ b/apps/plugins/xworld/sys.c
@@ -63,7 +63,7 @@ static void sys_rotate_keymap(struct System* sys)
63 sys->keymap.down = BTN_DOWN; 63 sys->keymap.down = BTN_DOWN;
64 sys->keymap.left = BTN_LEFT; 64 sys->keymap.left = BTN_LEFT;
65 sys->keymap.right = BTN_RIGHT; 65 sys->keymap.right = BTN_RIGHT;
66#if (CONFIG_KEYPAD == SANSA_FUZEPLUS_PAD) 66#ifdef BTN_HAVE_DIAGONAL
67 sys->keymap.upleft = BTN_UP_LEFT; 67 sys->keymap.upleft = BTN_UP_LEFT;
68 sys->keymap.upright = BTN_UP_RIGHT; 68 sys->keymap.upright = BTN_UP_RIGHT;
69 sys->keymap.downleft = BTN_DOWN_RIGHT; 69 sys->keymap.downleft = BTN_DOWN_RIGHT;
@@ -75,7 +75,7 @@ static void sys_rotate_keymap(struct System* sys)
75 sys->keymap.down = BTN_LEFT; 75 sys->keymap.down = BTN_LEFT;
76 sys->keymap.left = BTN_UP; 76 sys->keymap.left = BTN_UP;
77 sys->keymap.right = BTN_DOWN; 77 sys->keymap.right = BTN_DOWN;
78#if (CONFIG_KEYPAD == SANSA_FUZEPLUS_PAD) 78#ifdef BTN_HAVE_DIAGONAL
79 sys->keymap.upleft = BTN_UP_RIGHT; 79 sys->keymap.upleft = BTN_UP_RIGHT;
80 sys->keymap.upright = BTN_DOWN_RIGHT; 80 sys->keymap.upright = BTN_DOWN_RIGHT;
81 sys->keymap.downleft = BTN_UP_LEFT; 81 sys->keymap.downleft = BTN_UP_LEFT;
@@ -87,7 +87,7 @@ static void sys_rotate_keymap(struct System* sys)
87 sys->keymap.down = BTN_RIGHT; 87 sys->keymap.down = BTN_RIGHT;
88 sys->keymap.left = BTN_DOWN; 88 sys->keymap.left = BTN_DOWN;
89 sys->keymap.right = BTN_UP; 89 sys->keymap.right = BTN_UP;
90#if (CONFIG_KEYPAD == SANSA_FUZEPLUS_PAD) 90#ifdef BTN_HAVE_DIAGONAL
91 sys->keymap.upleft = BTN_DOWN_LEFT; 91 sys->keymap.upleft = BTN_DOWN_LEFT;
92 sys->keymap.upright = BTN_UP_LEFT; 92 sys->keymap.upright = BTN_UP_LEFT;
93 sys->keymap.downleft = BTN_DOWN_RIGHT; 93 sys->keymap.downleft = BTN_DOWN_RIGHT;
diff --git a/apps/plugins/xworld/sys.h b/apps/plugins/xworld/sys.h
index ced1fd98cd..4b1ec9b13a 100644
--- a/apps/plugins/xworld/sys.h
+++ b/apps/plugins/xworld/sys.h
@@ -64,12 +64,14 @@ struct keymapping_t {
64 int down; 64 int down;
65 int left; 65 int left;
66 int right; 66 int right;
67#if (CONFIG_KEYPAD == SANSA_FUZEPLUS_PAD) 67
68 /* These aren't conditional, even if they aren't used (this is to
69 * prevent headers and source from having varying defintions of
70 * this structure, leading to memory corruption */
68 int upleft; 71 int upleft;
69 int upright; 72 int upright;
70 int downleft; 73 int downleft;
71 int downright; 74 int downright;
72#endif
73}; 75};
74 76
75typedef void (*AudioCallback)(void *param, uint8_t *stream, int len); 77typedef void (*AudioCallback)(void *param, uint8_t *stream, int len);