diff options
author | Franklin Wei <git@fwei.tk> | 2017-09-30 20:50:33 -0400 |
---|---|---|
committer | Franklin Wei <git@fwei.tk> | 2017-09-30 20:50:33 -0400 |
commit | 23e7d0ef19dc82e39f249a4cd65ec797a6c06aba (patch) | |
tree | 73d7b786e6255ae703786f98c3d3df0c5341a5dd /apps | |
parent | bb55fceb7020e3235d4b5c33976d9b9d10dc091a (diff) | |
download | rockbox-23e7d0ef19dc82e39f249a4cd65ec797a6c06aba.tar.gz rockbox-23e7d0ef19dc82e39f249a4cd65ec797a6c06aba.zip |
xworld: support diagonal buttons on Zen X-Fi
Change-Id: Ia738ecd2a39c0c0772d6f939d549dd5d0eda055e
Diffstat (limited to 'apps')
-rw-r--r-- | apps/plugins/lib/keymaps.h | 11 | ||||
-rw-r--r-- | apps/plugins/xworld/resource.c | 2 | ||||
-rw-r--r-- | apps/plugins/xworld/sys.c | 6 | ||||
-rw-r--r-- | apps/plugins/xworld/sys.h | 6 |
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 | ||
75 | typedef void (*AudioCallback)(void *param, uint8_t *stream, int len); | 77 | typedef void (*AudioCallback)(void *param, uint8_t *stream, int len); |