New port: AIGO EROS Q / EROS K

The Q and K have a slightly different case, but the hardware under the
shell is completely identical.

These models are rebadged versions:

 * Hifiwalker H2   (== Q)
 * AGPTek H3       (== K)
 * Surfans F20     (== K)

Other notes:

  * Significant improvements in the shared Hiby-platform launcher/loader
    * SD card can theoretically be hot-swapped now
    * Support external USB mass storage!
  * Some consolidation of Hiby-platform targets
  * Some consolidation of plugin keymaps

Todo/known issues:

 * Keymaps need to be gone over properly
 * Convert to HAVE_SCROLLWHEEL?

Change-Id: I5a8a4f22c38a5b69392ca7c0a8ad8c4e07d9523c
This commit is contained in:
Solomon Peachy 2020-10-08 09:47:40 -04:00
parent 5efaa9ef80
commit 2a471e288c
86 changed files with 2097 additions and 1398 deletions

View file

@ -302,4 +302,6 @@ keymaps/keymap-xduoox3ii.c
keymaps/keymap-xduoox20.c
#elif CONFIG_KEYPAD == FIIO_M3K_PAD
keymaps/keymap-fiiom3k.c
#elif CONFIG_KEYPAD == EROSQ_PAD
keymaps/keymap-erosq.c
#endif

View file

@ -46,7 +46,7 @@ toolsicon.130x130x16.bmp
hibyicon.70x70x16.bmp
rockboxicon.70x70x16.bmp
toolsicon.70x70x16.bmp
#elif (defined(XDUOO_X3II) || defined(XDUOO_X20))
#elif (defined(XDUOO_X3II) || defined(XDUOO_X20) || defined(EROS_Q))
hibyicon.130x130x16.bmp
rockboxicon.130x130x16.bmp
toolsicon.130x130x16.bmp

View file

@ -2525,7 +2525,7 @@ static const struct {
{ "Screendump", dbg_screendump },
#endif
{ "Skin Engine RAM usage", dbg_skin_engine },
#if ((CONFIG_PLATFORM & PLATFORM_NATIVE) || defined(SONY_NWZ_LINUX) || defined(AGPTEK_ROCKER) || defined(XDUOO_X3II) || defined(XDUOO_X20)) && !defined(SIMULATOR)
#if ((CONFIG_PLATFORM & PLATFORM_NATIVE) || defined(SONY_NWZ_LINUX) || defined(HIBY_LINUX) || defined(FIIO_M3K)) && !defined(SIMULATOR)
{ "View HW info", dbg_hw_info },
#endif
#if (CONFIG_PLATFORM & PLATFORM_NATIVE)

256
apps/keymaps/keymap-erosq.c Normal file
View file

@ -0,0 +1,256 @@
/***************************************************************************
* __________ __ ___.
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
* \/ \/ \/ \/ \/
*
* Copyright (C) 2020 Solomon Peachy
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
****************************************************************************/
#include "config.h"
#include "action.h"
#include "button.h"
#include "settings.h"
/* {Action Code, Button code, Prereq button code } */
/*
* The format of the list is as follows
* { Action Code, Button code, Prereq button code }
* if there's no need to check the previous button's value, use BUTTON_NONE
* Insert LAST_ITEM_IN_LIST at the end of each mapping
*/
static const struct button_mapping button_context_standard[] = {
{ ACTION_STD_PREV, BUTTON_SCROLL_BACK, BUTTON_NONE },
{ ACTION_STD_PREV, BUTTON_PREV, BUTTON_NONE },
{ ACTION_STD_PREVREPEAT, BUTTON_PREV|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_STD_NEXT, BUTTON_SCROLL_FWD, BUTTON_NONE },
{ ACTION_STD_NEXT, BUTTON_NEXT, BUTTON_NONE },
{ ACTION_STD_NEXTREPEAT, BUTTON_NEXT|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_STD_OK, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY },
{ ACTION_STD_CANCEL, BUTTON_BACK, BUTTON_NONE },
{ ACTION_STD_CONTEXT, BUTTON_MENU|BUTTON_REPEAT, BUTTON_MENU },
{ ACTION_STD_MENU, BUTTON_MENU|BUTTON_REL, BUTTON_MENU },
/* ACTION_STD_QUICKSCREEN,
* ACTION_STD_KEYLOCK
* ACTION_STD_REC
* ACTION_STD_HOTKEY
*/
LAST_ITEM_IN_LIST
}; /* button_context_standard */
static const struct button_mapping button_context_mainmenu[] = {
{ ACTION_TREE_WPS, BUTTON_BACK, BUTTON_NONE },
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_TREE),
}; /* button_context_mainmenu as with sansa clip mapping - "back" button returns you to WPS */
static const struct button_mapping button_context_wps[] = {
{ ACTION_WPS_BROWSE, BUTTON_BACK|BUTTON_REL, BUTTON_BACK },
{ ACTION_WPS_PLAY, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY },
{ ACTION_WPS_SEEKBACK, BUTTON_PREV|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_WPS_SEEKFWD, BUTTON_NEXT|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_WPS_STOPSEEK, BUTTON_NEXT|BUTTON_REL, BUTTON_NEXT|BUTTON_REPEAT },
{ ACTION_WPS_STOPSEEK, BUTTON_PREV|BUTTON_REL, BUTTON_PREV|BUTTON_REPEAT },
{ ACTION_WPS_SKIPNEXT, BUTTON_NEXT|BUTTON_REL, BUTTON_NEXT },
{ ACTION_WPS_SKIPPREV, BUTTON_PREV|BUTTON_REL, BUTTON_PREV },
{ ACTION_WPS_STOP, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_PLAY },
{ ACTION_WPS_VOLDOWN, BUTTON_VOL_DOWN, BUTTON_NONE },
{ ACTION_WPS_VOLDOWN, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_WPS_VOLUP, BUTTON_VOL_UP, BUTTON_NONE },
{ ACTION_WPS_VOLUP, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE },
/* ACTION_WPS_ID3SCREEN optional */
{ ACTION_WPS_CONTEXT, BUTTON_MENU|BUTTON_REPEAT, BUTTON_MENU },
// { ACTION_WPS_QUICKSCREEN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_DOWN },
{ ACTION_WPS_MENU, BUTTON_MENU|BUTTON_REL, BUTTON_MENU }, /* this should be the same as ACTION_STD_MENU */
/* ACTION_WPS_VIEW_PLAYLIST
* ACTION_WPS_LIST_BOOKMARKS, optional
* ACTION_WPS_CREATE_BOOKMARK, optional
*/
{ ACTION_STD_KEYLOCK, BUTTON_POWER, BUTTON_NONE },
LAST_ITEM_IN_LIST
}; /* button_context_wps */
static const struct button_mapping button_context_settings[] = {
{ ACTION_SETTINGS_INC, BUTTON_SCROLL_FWD, BUTTON_NONE },
// { ACTION_SETTINGS_INCREPEAT, BUTTON_VOLUP|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_SETTINGS_INCBIGSTEP, BUTTON_VOL_UP, BUTTON_NONE },
{ ACTION_SETTINGS_DEC, BUTTON_SCROLL_BACK, BUTTON_NONE },
// { ACTION_SETTINGS_DECREPEAT, BUTTON_VOLDOWN|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_SETTINGS_DECBIGSTEP, BUTTON_VOL_DOWN, BUTTON_NONE },
/* ACTION_SETTINGS_DECBIGSTEP */
{ ACTION_SETTINGS_RESET, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_PLAY },
/* ACTION_SETTINGS_SET, Used by touchscreen targets */
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD),
}; /* button_context_settings */
static const struct button_mapping button_context_list[] = {
/* ACTION_LISTTREE_PGUP, optional
* ACTION_LISTTREE_PGDOWN, optional
*/
#ifdef HAVE_VOLUME_IN_LIST
{ ACTION_LIST_VOLUP, BUTTON_VOL_UP, BUTTON_NONE },
{ ACTION_LIST_VOLUP, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_LIST_VOLDOWN, BUTTON_VOL_DOWN, BUTTON_NONE },
{ ACTION_LIST_VOLDOWN, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
#endif
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
}; /* button_context_list */
#if 0 // XXX?
static const struct button_mapping button_context_tree[] = {
/* ACTION_TREE_ROOT_INIT,
* ACTION_TREE_PGLEFT, optional
* ACTION_TREE_PGRIGHT, optional
* ACTION_TREE_STOP,
* ACTION_TREE_WPS,
* ACTION_TREE_HOTKEY,
*/
/* { ACTION_TREE_WPS, BUTTON_UP|BUTTON_REL, BUTTON_UP },
* { ACTION_TREE_STOP, BUTTON_POWER|BUTTON_REL, BUTTON_POWER },
* { ACTION_TREE_HOTKEY, BUTTON_REC|BUTTON_REL, BUTTON_REC },
*/
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST),
}; /* button_context_tree */
#endif
static const struct button_mapping button_context_yesno[] = {
{ ACTION_YESNO_ACCEPT, BUTTON_PLAY, BUTTON_NONE },
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD),
}; /* button_context_settings_yesno */
static const struct button_mapping button_context_quickscreen[] = {
{ ACTION_QS_TOP, BUTTON_PREV|BUTTON_REL, BUTTON_NONE },
{ ACTION_QS_TOP, BUTTON_PREV|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_QS_DOWN, BUTTON_SCROLL_FWD|BUTTON_REL, BUTTON_NONE },
{ ACTION_QS_LEFT, BUTTON_SCROLL_BACK|BUTTON_REL, BUTTON_NONE },
{ ACTION_QS_RIGHT, BUTTON_NEXT|BUTTON_REL, BUTTON_NONE },
{ ACTION_QS_RIGHT, BUTTON_NEXT|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_STD_CANCEL, BUTTON_BACK, BUTTON_NONE },
LAST_ITEM_IN_LIST
}; /* button_context_quickscreen */
static const struct button_mapping button_context_settings_time[] = {
{ ACTION_STD_PREV, BUTTON_PREV|BUTTON_REL, BUTTON_PREV },
{ ACTION_STD_PREVREPEAT, BUTTON_PREV|BUTTON_REPEAT, BUTTON_PREV },
{ ACTION_STD_NEXT, BUTTON_NEXT|BUTTON_REL, BUTTON_NEXT },
{ ACTION_STD_NEXTREPEAT, BUTTON_NEXT|BUTTON_REPEAT, BUTTON_NEXT },
{ ACTION_STD_CANCEL, BUTTON_BACK|BUTTON_REPEAT, BUTTON_BACK },
{ ACTION_STD_OK, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY },
{ ACTION_SETTINGS_INC, BUTTON_SCROLL_FWD, BUTTON_NONE },
// { ACTION_SETTINGS_INCREPEAT, BUTTON_SCROLL_FWD|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_SETTINGS_DEC, BUTTON_SCROLL_BACK, BUTTON_NONE },
// { ACTION_SETTINGS_DECREPEAT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
LAST_ITEM_IN_LIST
//LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_SETTINGS)
}; /* button_context_settings_time */
static const struct button_mapping button_context_pitchscreen[] = {
{ ACTION_PS_INC_SMALL, BUTTON_SCROLL_FWD, BUTTON_NONE },
{ ACTION_PS_INC_BIG, BUTTON_VOL_UP, BUTTON_NONE },
{ ACTION_PS_DEC_SMALL, BUTTON_SCROLL_BACK, BUTTON_NONE },
{ ACTION_PS_DEC_BIG, BUTTON_VOL_DOWN, BUTTON_NONE },
{ ACTION_PS_NUDGE_LEFT, BUTTON_PREV, BUTTON_NONE },
/* { ACTION_PS_NUDGE_LEFTOFF, BUTTON_LEFT|BUTTON_REL, BUTTON_NONE }, */
{ ACTION_PS_NUDGE_RIGHT, BUTTON_NEXT, BUTTON_NONE },
/* { ACTION_PS_NUDGE_RIGHTOFF, BUTTON_RIGHT|BUTTON_REL, BUTTON_NONE }, */
{ ACTION_PS_TOGGLE_MODE, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY },
{ ACTION_PS_RESET, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_PLAY },
{ ACTION_PS_EXIT, BUTTON_BACK, BUTTON_NONE },
{ ACTION_PS_SLOWER, BUTTON_PREV|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_PS_FASTER, BUTTON_NEXT|BUTTON_REPEAT, BUTTON_NONE },
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD),
}; /* button_context_pitchscreen */
static const struct button_mapping button_context_keyboard[] = {
{ ACTION_KBD_LEFT, BUTTON_SCROLL_FWD, BUTTON_NONE },
{ ACTION_KBD_RIGHT, BUTTON_SCROLL_BACK, BUTTON_NONE },
{ ACTION_KBD_CURSOR_LEFT, BUTTON_PREV, BUTTON_NONE },
{ ACTION_KBD_CURSOR_RIGHT, BUTTON_NEXT, BUTTON_NONE },
{ ACTION_KBD_UP, BUTTON_VOL_DOWN, BUTTON_NONE },
{ ACTION_KBD_UP, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_KBD_DOWN, BUTTON_VOL_UP, BUTTON_NONE },
{ ACTION_KBD_DOWN, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_KBD_PAGE_FLIP, BUTTON_MENU, BUTTON_NONE },
{ ACTION_KBD_BACKSPACE, BUTTON_BACK, BUTTON_NONE },
{ ACTION_KBD_BACKSPACE, BUTTON_BACK|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_KBD_SELECT, BUTTON_PLAY, BUTTON_NONE },
{ ACTION_KBD_DONE, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_KBD_ABORT, BUTTON_POWER, BUTTON_NONE },
{ ACTION_KBD_MORSE_INPUT, BUTTON_MENU|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_KBD_MORSE_SELECT, BUTTON_PLAY|BUTTON_REL, BUTTON_NONE },
LAST_ITEM_IN_LIST
}; /* button_context_keyboard */
static const struct button_mapping button_context_bmark[] = {
{ ACTION_BMS_DELETE, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_PLAY },
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST),
}; /* button_context_bmark */
/* get_context_mapping returns a pointer to one of the above defined arrays depending on the context */
const struct button_mapping* get_context_mapping(int context)
{
switch (context)
{
case CONTEXT_STD:
return button_context_standard;
case CONTEXT_WPS:
return button_context_wps;
case CONTEXT_MAINMENU:
return button_context_mainmenu;
case CONTEXT_TREE:
case CONTEXT_LIST:
return button_context_list;
case CONTEXT_SETTINGS:
case CONTEXT_SETTINGS_EQ:
return button_context_settings;
case CONTEXT_SETTINGS_TIME:
return button_context_settings_time;
case CONTEXT_YESNOSCREEN:
return button_context_yesno;
case CONTEXT_BOOKMARKSCREEN:
return button_context_bmark;
case CONTEXT_QUICKSCREEN:
return button_context_quickscreen;
case CONTEXT_PITCHSCREEN:
return button_context_pitchscreen;
case CONTEXT_KEYBOARD:
case CONTEXT_MORSE_INPUT:
return button_context_keyboard;
default:
return button_context_standard;
}
return button_context_standard;
}

View file

@ -24,7 +24,6 @@
#include "plugin.h"
#include "lang_enum.h"
#define BATTERY_LOG HOME_DIR"/battery_bench.txt"
#define BUF_SIZE 16000
@ -83,7 +82,17 @@
#define BATTERY_ON_TXT "SELECT - start"
#define BATTERY_OFF_TXT "HOME"
#elif CONFIG_KEYPAD == IRIVER_H10_PAD
#elif (CONFIG_KEYPAD == IRIVER_H10_PAD || \
CONFIG_KEYPAD == CREATIVE_ZENXFI3_PAD || \
CONFIG_KEYPAD == SONY_NWZ_PAD || \
CONFIG_KEYPAD == AGPTEK_ROCKER_PAD || \
CONFIG_KEYPAD == XDUOO_X3_PAD || \
CONFIG_KEYPAD == IHIFI_770_PAD || \
CONFIG_KEYPAD == IHIFI_800_PAD || \
CONFIG_KEYPAD == XDUOO_X3II_PAD || \
CONFIG_KEYPAD == XDUOO_X20_PAD || \
CONFIG_KEYPAD == FIIO_M3K_PAD || \
CONFIG_KEYPAD == EROSQ_PAD)
#define BATTERY_ON BUTTON_PLAY
#define BATTERY_OFF BUTTON_POWER
@ -177,7 +186,7 @@
#elif (CONFIG_KEYPAD == SAMSUNG_YH820_PAD) || \
(CONFIG_KEYPAD == SAMSUNG_YH92X_PAD)
#define BATTERY_ON BUTTON_LEFT
#define BATTERY_OFF BUTTON_RIGHT
#define BATTERY_ON_TXT "LEFT"
@ -214,12 +223,6 @@
#define BATTERY_ON_TXT "SELECT - start"
#define BATTERY_OFF_TXT "POWER"
#elif CONFIG_KEYPAD == CREATIVE_ZENXFI3_PAD
#define BATTERY_ON BUTTON_PLAY
#define BATTERY_OFF BUTTON_POWER
#define BATTERY_ON_TXT "PLAY - start"
#define BATTERY_OFF_TXT "POWER"
#elif (CONFIG_KEYPAD == HM60X_PAD) || (CONFIG_KEYPAD == HM801_PAD)
#define BATTERY_ON BUTTON_SELECT
#define BATTERY_OFF BUTTON_POWER
@ -227,12 +230,6 @@
#define BATTERY_OFF_TXT "POWER"
#elif CONFIG_KEYPAD == SONY_NWZ_PAD
#define BATTERY_ON BUTTON_PLAY
#define BATTERY_OFF BUTTON_POWER
#define BATTERY_ON_TXT "PLAY - start"
#define BATTERY_OFF_TXT "Power"
#elif CONFIG_KEYPAD == DX50_PAD
#define BATTERY_ON BUTTON_PLAY
#define BATTERY_OFF BUTTON_POWER_LONG
@ -245,53 +242,8 @@
#define BATTERY_OFF_TXT "Power"
#define BATTERY_ON_TXT "Menu - start"
#elif CONFIG_KEYPAD == AGPTEK_ROCKER_PAD
#define BATTERY_ON BUTTON_LEFT
#define BATTERY_OFF BUTTON_RIGHT
#define BATTERY_OFF_TXT "Right"
#define BATTERY_ON_TXT "Left - start"
#elif defined(HAVE_TOUCHSCREEN)
#elif CONFIG_KEYPAD == XDUOO_X3_PAD
#define BATTERY_ON BUTTON_PLAY
#define BATTERY_OFF BUTTON_POWER
#define BATTERY_ON_TXT "PLAY - start"
#define BATTERY_OFF_TXT "POWER"
#elif CONFIG_KEYPAD == IHIFI_770_PAD
#define BATTERY_ON BUTTON_PLAY
#define BATTERY_OFF BUTTON_POWER
#define BATTERY_ON_TXT "PLAY - start"
#define BATTERY_OFF_TXT "POWER"
#elif CONFIG_KEYPAD == IHIFI_800_PAD
#define BATTERY_ON BUTTON_PLAY
#define BATTERY_OFF BUTTON_POWER
#define BATTERY_ON_TXT "PLAY - start"
#define BATTERY_OFF_TXT "POWER"
#elif CONFIG_KEYPAD == XDUOO_X3II_PAD
#define BATTERY_ON BUTTON_PLAY
#define BATTERY_OFF BUTTON_POWER
#define BATTERY_ON_TXT "Play - start"
#define BATTERY_OFF_TXT "POWER"
#elif CONFIG_KEYPAD == XDUOO_X20_PAD
#define BATTERY_ON BUTTON_PLAY
#define BATTERY_OFF BUTTON_POWER
#define BATTERY_ON_TXT "Play - start"
#define BATTERY_OFF_TXT "POWER"
#elif CONFIG_KEYPAD == FIIO_M3K_PAD
#define BATTERY_ON BUTTON_PLAY
#define BATTERY_OFF BUTTON_POWER
#define BATTERY_ON_TXT "Play - start"
#define BATTERY_OFF_TXT "POWER"
#else
#error No keymap defined!
#endif
#ifdef HAVE_TOUCHSCREEN
#ifndef BATTERY_ON
#define BATTERY_ON BUTTON_CENTER
#endif
@ -304,6 +256,9 @@
#ifndef BATTERY_OFF_TXT
#define BATTERY_OFF_TXT "TOPLEFT"
#endif
#else
#error No keymap defined!
#endif
/****************************** Plugin Entry Point ****************************/
@ -375,7 +330,7 @@ static bool exit_tsr(bool reenter)
#define BIT_CHARGING 0x2
#define BIT_USB_POWER 0x4
#define HMS(x) (x)/3600,((x)%3600)/60,((x)%3600)%60
#define HMS(x) (x)/3600,((x)%3600)/60,((x)%3600)%60
#if CONFIG_CHARGING || defined(HAVE_USB_POWER)
static unsigned int charge_state(void)
@ -476,7 +431,7 @@ static void thread(void)
rb->register_storage_idle_func(flush_buffer);
#endif
}
/* What to do when the measurement buffer is full:
1) save our measurements to disk but waste some power doing so?
2) throw away measurements to save some power?
@ -486,12 +441,12 @@ static void thread(void)
if (buf_idx == BUF_ELEMENTS) {
flush_buffer();
}
/* sleep some time until next measurement */
rb->queue_wait_w_tmo(&thread_q, &ev, sleep_time);
switch (ev.id)
{
case SYS_USB_CONNECTED:
case SYS_USB_CONNECTED:
in_usb_mode = true;
rb->usb_acknowledge(SYS_USB_CONNECTED_ACK);
break;
@ -516,7 +471,7 @@ static void thread(void)
#else
flush_buffer();
#endif
/* log end of bench and exit reason */
fd = rb->open(BATTERY_LOG, O_RDWR | O_CREAT | O_APPEND, 0666);
if (fd >= 0)
@ -565,7 +520,7 @@ enum plugin_status plugin_start(const void* parameter)
rb->lcd_remote_putsxy,LCD_REMOTE_WIDTH,2);
rb->lcd_remote_update();
#endif
do
{
button = rb->button_get(true);
@ -574,10 +529,10 @@ enum plugin_status plugin_start(const void* parameter)
case BATTERY_ON:
#ifdef BATTERY_RC_ON
case BATTERY_RC_ON:
#endif
#endif
on = true;
break;
case BATTERY_OFF:
break;
case BATTERY_OFF:
#ifdef BATTERY_RC_OFF
case BATTERY_RC_OFF:
#endif
@ -588,7 +543,7 @@ enum plugin_status plugin_start(const void* parameter)
return PLUGIN_USB_CONNECTED;
}
}while(!on);
fd = rb->open(BATTERY_LOG, O_RDONLY);
if (fd < 0)
{

View file

@ -543,39 +543,7 @@ enum {
#define BJACK_QUIT_NAME "Volume up"
#define BJACK_DOUBLE_NAME "Option+Down"
#elif CONFIG_KEYPAD == XDUOO_X3_PAD
#define BJACK_SELECT_NAME "PLAY"
#define BJACK_STAY_NAME "NEXT"
#define BJACK_QUIT_NAME "POWER"
#define BJACK_DOUBLE_NAME "PREV"
#define BJACK_SELECT BUTTON_PLAY
#define BJACK_QUIT BUTTON_POWER
#define BJACK_MAX BUTTON_VOL_UP
#define BJACK_MIN BUTTON_VOL_DOWN
#define BJACK_STAY BUTTON_NEXT
#define BJACK_DOUBLEDOWN BUTTON_PREV
#define BJACK_UP BUTTON_HOME
#define BJACK_DOWN BUTTON_OPTION
#define BJACK_RIGHT BUTTON_NEXT
#define BJACK_LEFT BUTTON_PREV
#elif CONFIG_KEYPAD == XDUOO_X3II_PAD
#define BJACK_SELECT_NAME "PLAY"
#define BJACK_STAY_NAME "NEXT"
#define BJACK_QUIT_NAME "POWER"
#define BJACK_DOUBLE_NAME "PREV"
#define BJACK_SELECT BUTTON_PLAY
#define BJACK_QUIT BUTTON_POWER
#define BJACK_MAX BUTTON_VOL_UP
#define BJACK_MIN BUTTON_VOL_DOWN
#define BJACK_STAY BUTTON_NEXT
#define BJACK_DOUBLEDOWN BUTTON_PREV
#define BJACK_UP BUTTON_HOME
#define BJACK_DOWN BUTTON_OPTION
#define BJACK_RIGHT BUTTON_NEXT
#define BJACK_LEFT BUTTON_PREV
#elif CONFIG_KEYPAD == XDUOO_X20_PAD
#elif CONFIG_KEYPAD == XDUOO_X3_PAD || CONFIG_KEYPAD == XDUOO_X3II_PAD || CONFIG_KEYPAD == XDUOO_X20_PAD
#define BJACK_SELECT_NAME "PLAY"
#define BJACK_STAY_NAME "NEXT"
#define BJACK_QUIT_NAME "POWER"
@ -607,7 +575,7 @@ enum {
#define BJACK_RIGHT BUTTON_NEXT
#define BJACK_LEFT BUTTON_PREV
#elif CONFIG_KEYPAD == IHIFI_770_PAD
#elif CONFIG_KEYPAD == IHIFI_770_PAD || CONFIG_KEYPAD == IHIFI_800_PAD
#define BJACK_SELECT_NAME "PLAY"
#define BJACK_STAY_NAME "NEXT"
#define BJACK_QUIT_NAME "POWER"
@ -623,7 +591,7 @@ enum {
#define BJACK_RIGHT BUTTON_NEXT
#define BJACK_LEFT BUTTON_PREV
#elif CONFIG_KEYPAD == IHIFI_800_PAD
#elif CONFIG_KEYPAD == EROSQ_PAD
#define BJACK_SELECT_NAME "PLAY"
#define BJACK_STAY_NAME "NEXT"
#define BJACK_QUIT_NAME "POWER"
@ -632,12 +600,12 @@ enum {
#define BJACK_QUIT BUTTON_POWER
#define BJACK_MAX BUTTON_VOL_UP
#define BJACK_MIN BUTTON_VOL_DOWN
#define BJACK_STAY BUTTON_NEXT
#define BJACK_DOUBLEDOWN BUTTON_PREV
#define BJACK_UP BUTTON_HOME
#define BJACK_DOWN (BUTTON_POWER | BUTTON_HOME)
#define BJACK_RIGHT BUTTON_NEXT
#define BJACK_LEFT BUTTON_PREV
#define BJACK_STAY BUTTON_MENU
#define BJACK_DOUBLEDOWN BUTTON_BACK
#define BJACK_UP BUTTON_PREV
#define BJACK_DOWN BUTTON_NEXT
#define BJACK_RIGHT BUTTON_SCROLL_FWD
#define BJACK_LEFT BUTTON_SCROLL_BACK
#else
#error No keymap defined!

View file

@ -41,9 +41,6 @@
#include "pluginbitmaps/brickmania_break.h"
#endif
/*
*
* Keymaps
@ -307,27 +304,7 @@ CONFIG_KEYPAD == SANSA_CONNECT_PAD
#define UP BUTTON_UP
#define DOWN BUTTON_DOWN
#elif CONFIG_KEYPAD == XDUOO_X3_PAD
#define QUIT BUTTON_POWER
#define LEFT BUTTON_PREV
#define RIGHT BUTTON_NEXT
#define ALTLEFT BUTTON_VOL_DOWN
#define ALTRIGHT BUTTON_VOL_UP
#define SELECT BUTTON_PLAY
#define UP BUTTON_HOME
#define DOWN BUTTON_OPTION
#elif CONFIG_KEYPAD == XDUOO_X3II_PAD
#define QUIT BUTTON_POWER
#define LEFT BUTTON_PREV
#define RIGHT BUTTON_NEXT
#define ALTLEFT BUTTON_VOL_DOWN
#define ALTRIGHT BUTTON_VOL_UP
#define SELECT BUTTON_PLAY
#define UP BUTTON_HOME
#define DOWN BUTTON_OPTION
#elif CONFIG_KEYPAD == XDUOO_X20_PAD
#elif CONFIG_KEYPAD == XDUOO_X3_PAD || CONFIG_KEYPAD == XDUOO_X3II_PAD || CONFIG_KEYPAD == XDUOO_X20_PAD
#define QUIT BUTTON_POWER
#define LEFT BUTTON_PREV
#define RIGHT BUTTON_NEXT
@ -347,7 +324,7 @@ CONFIG_KEYPAD == SANSA_CONNECT_PAD
#define UP BUTTON_HOME
#define DOWN BUTTON_OPTION
#elif CONFIG_KEYPAD == IHIFI_770_PAD
#elif CONFIG_KEYPAD == IHIFI_770_PAD || CONFIG_KEYPAD == IHIFI_800_PAD
#define QUIT BUTTON_POWER
#define LEFT BUTTON_HOME
#define RIGHT BUTTON_VOL_DOWN
@ -357,12 +334,10 @@ CONFIG_KEYPAD == SANSA_CONNECT_PAD
#define UP BUTTON_PREV
#define DOWN BUTTON_NEXT
#elif CONFIG_KEYPAD == IHIFI_800_PAD
#elif CONFIG_KEYPAD == EROSQ_PAD
#define QUIT BUTTON_POWER
#define LEFT BUTTON_HOME
#define RIGHT BUTTON_VOL_DOWN
#define ALTLEFT (BUTTON_POWER | BUTTON_HOME)
#define ALTRIGHT (BUTTON_POWER | BUTTON_VOL_UP)
#define LEFT BUTTON_SCROLL_BACK
#define RIGHT BUTTON_SCROLL_FWD
#define SELECT BUTTON_PLAY
#define UP BUTTON_PREV
#define DOWN BUTTON_NEXT

View file

@ -493,29 +493,7 @@ F3: equal to "="
#define CALCULATOR_CALC BUTTON_VOLUP
#define CALCULATOR_CLEAR (BUTTON_SELECT|BUTTON_REPEAT)
#elif CONFIG_KEYPAD == XDUOO_X3_PAD
#define CALCULATOR_LEFT BUTTON_PREV
#define CALCULATOR_RIGHT BUTTON_NEXT
#define CALCULATOR_UP BUTTON_HOME
#define CALCULATOR_DOWN BUTTON_OPTION
#define CALCULATOR_QUIT BUTTON_POWER
#define CALCULATOR_INPUT_CALC_PRE (BUTTON_OPTION|BUTTON_REPEAT)
#define CALCULATOR_INPUT (BUTTON_PLAY|BUTTON_REL)
#define CALCULATOR_CALC (BUTTON_PLAY|BUTTON_REPEAT)
#define CALCULATOR_CLEAR (BUTTON_POWER|BUTTON_REPEAT)
#elif CONFIG_KEYPAD == XDUOO_X3II_PAD
#define CALCULATOR_LEFT BUTTON_PREV
#define CALCULATOR_RIGHT BUTTON_NEXT
#define CALCULATOR_UP BUTTON_HOME
#define CALCULATOR_DOWN BUTTON_OPTION
#define CALCULATOR_QUIT BUTTON_POWER
#define CALCULATOR_INPUT_CALC_PRE (BUTTON_OPTION|BUTTON_REPEAT)
#define CALCULATOR_INPUT (BUTTON_PLAY|BUTTON_REL)
#define CALCULATOR_CALC (BUTTON_PLAY|BUTTON_REPEAT)
#define CALCULATOR_CLEAR (BUTTON_POWER|BUTTON_REPEAT)
#elif CONFIG_KEYPAD == XDUOO_X20_PAD
#elif CONFIG_KEYPAD == XDUOO_X3_PAD || CONFIG_KEYPAD == XDUOO_X3II_PAD || CONFIG_KEYPAD == XDUOO_X20_PAD
#define CALCULATOR_LEFT BUTTON_PREV
#define CALCULATOR_RIGHT BUTTON_NEXT
#define CALCULATOR_UP BUTTON_HOME
@ -537,7 +515,7 @@ F3: equal to "="
#define CALCULATOR_CALC (BUTTON_PLAY|BUTTON_REPEAT)
#define CALCULATOR_CLEAR (BUTTON_POWER|BUTTON_REPEAT)
#elif CONFIG_KEYPAD == IHIFI_770_PAD
#elif CONFIG_KEYPAD == IHIFI_770_PAD || CONFIG_KEYPAD == IHIFI_800_PAD
#define CALCULATOR_LEFT BUTTON_HOME
#define CALCULATOR_RIGHT BUTTON_VOL_DOWN
#define CALCULATOR_UP BUTTON_PREV
@ -548,16 +526,15 @@ F3: equal to "="
#define CALCULATOR_CALC (BUTTON_PLAY|BUTTON_REPEAT)
#define CALCULATOR_CLEAR (BUTTON_POWER|BUTTON_REPEAT)
#elif CONFIG_KEYPAD == IHIFI_800_PAD
#define CALCULATOR_LEFT BUTTON_HOME
#define CALCULATOR_RIGHT BUTTON_VOL_DOWN
#define CALCULATOR_UP BUTTON_PREV
#define CALCULATOR_DOWN BUTTON_NEXT
#define CALCULATOR_QUIT BUTTON_POWER
#define CALCULATOR_INPUT_CALC_PRE (BUTTON_HOME|BUTTON_REPEAT)
#define CALCULATOR_INPUT (BUTTON_PLAY|BUTTON_REL)
#define CALCULATOR_CALC (BUTTON_PLAY|BUTTON_REPEAT)
#define CALCULATOR_CLEAR (BUTTON_POWER|BUTTON_REPEAT)
#elif CONFIG_KEYPAD == EROSQ_PAD
#define CALCULATOR_LEFT BUTTON_SCROLL_BACK
#define CALCULATOR_RIGHT BUTTON_SCROLL_FWD
#define CALCULATOR_UP BUTTON_PREV
#define CALCULATOR_DOWN BUTTON_NEXT
#define CALCULATOR_QUIT BUTTON_POWER
#define CALCULATOR_INPUT BUTTON_PLAY
#define CALCULATOR_CALC BUTTON_MENU
#define CALCULATOR_CLEAR BUTTON_BACK
#else
#error No keymap defined!

View file

@ -381,27 +381,7 @@
#define CALENDAR_NEXT_MONTH (BUTTON_VOLDOWN)
#define CALENDAR_PREV_MONTH (BUTTON_VOLUP)
#elif CONFIG_KEYPAD == XDUOO_X3_PAD
#define CALENDAR_QUIT BUTTON_POWER
#define CALENDAR_SELECT BUTTON_PLAY
#define CALENDAR_NEXT_WEEK BUTTON_OPTION
#define CALENDAR_PREV_WEEK BUTTON_HOME
#define CALENDAR_NEXT_DAY BUTTON_NEXT
#define CALENDAR_PREV_DAY BUTTON_PREV
#define CALENDAR_NEXT_MONTH BUTTON_VOL_UP
#define CALENDAR_PREV_MONTH BUTTON_VOL_DOWN
#elif CONFIG_KEYPAD == XDUOO_X3II_PAD
#define CALENDAR_QUIT BUTTON_POWER
#define CALENDAR_SELECT BUTTON_PLAY
#define CALENDAR_NEXT_WEEK BUTTON_OPTION
#define CALENDAR_PREV_WEEK BUTTON_HOME
#define CALENDAR_NEXT_DAY BUTTON_NEXT
#define CALENDAR_PREV_DAY BUTTON_PREV
#define CALENDAR_NEXT_MONTH BUTTON_VOL_UP
#define CALENDAR_PREV_MONTH BUTTON_VOL_DOWN
#elif CONFIG_KEYPAD == XDUOO_X20_PAD
#elif CONFIG_KEYPAD == XDUOO_X3_PAD || CONFIG_KEYPAD == XDUOO_X3II_PAD || CONFIG_KEYPAD == XDUOO_X20_PAD
#define CALENDAR_QUIT BUTTON_POWER
#define CALENDAR_SELECT BUTTON_PLAY
#define CALENDAR_NEXT_WEEK BUTTON_OPTION
@ -421,7 +401,7 @@
#define CALENDAR_NEXT_MONTH BUTTON_VOL_UP
#define CALENDAR_PREV_MONTH BUTTON_VOL_DOWN
#elif CONFIG_KEYPAD == IHIFI_770_PAD
#elif CONFIG_KEYPAD == IHIFI_770_PAD || CONFIG_KEYPAD == IHIFI_800_PAD
#define CALENDAR_QUIT BUTTON_POWER
#define CALENDAR_SELECT BUTTON_PLAY
#define CALENDAR_NEXT_WEEK (BUTTON_POWER | BUTTON_VOL_DOWN)
@ -431,15 +411,15 @@
#define CALENDAR_NEXT_MONTH BUTTON_VOL_DOWN
#define CALENDAR_PREV_MONTH BUTTON_VOL_UP
#elif CONFIG_KEYPAD == IHIFI_800_PAD
#elif CONFIG_KEYPAD == EROSQ_PAD
#define CALENDAR_QUIT BUTTON_POWER
#define CALENDAR_SELECT BUTTON_PLAY
#define CALENDAR_NEXT_WEEK (BUTTON_POWER | BUTTON_VOL_DOWN)
#define CALENDAR_PREV_WEEK (BUTTON_POWER | BUTTON_VOL_UP)
#define CALENDAR_NEXT_DAY BUTTON_NEXT
#define CALENDAR_PREV_DAY BUTTON_PREV
#define CALENDAR_NEXT_MONTH BUTTON_VOL_DOWN
#define CALENDAR_PREV_MONTH BUTTON_VOL_UP
#define CALENDAR_NEXT_WEEK BUTTON_NEXT
#define CALENDAR_PREV_WEEK BUTTON_PREV
#define CALENDAR_NEXT_DAY BUTTON_SCROLL_FWD
#define CALENDAR_PREV_DAY BUTTON_SCROLL_BACK
#define CALENDAR_NEXT_MONTH BUTTON_VOL_UP
#define CALENDAR_PREV_MONTH BUTTON_VOL_DOWN
#else
#error "No keypad setting."

View file

@ -525,21 +525,7 @@
#define CB_SCROLL_LEFT (BUTTON_PREV|BUTTON_REPEAT)
#define CB_SCROLL_RIGHT (BUTTON_NEXT|BUTTON_REPEAT)
#elif CONFIG_KEYPAD == XDUOO_X3II_PAD
#define CB_SELECT BUTTON_PLAY
#define CB_UP BUTTON_HOME
#define CB_DOWN BUTTON_OPTION
#define CB_LEFT BUTTON_PREV
#define CB_RIGHT BUTTON_NEXT
#define CB_PLAY BUTTON_VOL_UP
#define CB_LEVEL BUTTON_VOL_DOWN
#define CB_MENU BUTTON_POWER
#define CB_SCROLL_UP (BUTTON_HOME|BUTTON_REPEAT)
#define CB_SCROLL_DOWN (BUTTON_OPTION|BUTTON_REPEAT)
#define CB_SCROLL_LEFT (BUTTON_PREV|BUTTON_REPEAT)
#define CB_SCROLL_RIGHT (BUTTON_NEXT|BUTTON_REPEAT)
#elif CONFIG_KEYPAD == XDUOO_X20_PAD
#elif CONFIG_KEYPAD == XDUOO_X3II_PAD || CONFIG_KEYPAD == XDUOO_X20_PAD
#define CB_SELECT BUTTON_PLAY
#define CB_UP BUTTON_HOME
#define CB_DOWN BUTTON_OPTION
@ -567,7 +553,7 @@
#define CB_SCROLL_LEFT (BUTTON_PREV|BUTTON_REPEAT)
#define CB_SCROLL_RIGHT (BUTTON_NEXT|BUTTON_REPEAT)
#elif CONFIG_KEYPAD == IHIFI_770_PAD
#elif CONFIG_KEYPAD == IHIFI_770_PAD || CONFIG_KEYPAD == IHIFI_800_PAD
#define CB_SELECT BUTTON_PLAY
#define CB_UP BUTTON_PREV
#define CB_DOWN BUTTON_NEXT
@ -581,19 +567,19 @@
#define CB_SCROLL_LEFT (BUTTON_HOME|BUTTON_REPEAT)
#define CB_SCROLL_RIGHT (BUTTON_VOL_UP|BUTTON_REPEAT)
#elif CONFIG_KEYPAD == IHIFI_800_PAD
#elif CONFIG_KEYPAD == EROSQ_PAD
#define CB_SELECT BUTTON_PLAY
#define CB_UP BUTTON_PREV
#define CB_DOWN BUTTON_NEXT
#define CB_LEFT BUTTON_HOME
#define CB_RIGHT BUTTON_VOL_DOWN
#define CB_PLAY BUTTON_VOL_UP
#define CB_LEVEL (BUTTON_PLAY|BUTTON_REPEAT)
#define CB_MENU BUTTON_POWER
#define CB_LEFT BUTTON_SCROLL_BACK
#define CB_RIGHT BUTTON_SCROLL_FWD
#define CB_PLAY BUTTON_VOL_DOWN
#define CB_MENU BUTTON_MENU
#define CB_LEVEL BUTTON_VOL_UP
#define CB_SCROLL_UP (BUTTON_PREV|BUTTON_REPEAT)
#define CB_SCROLL_DOWN (BUTTON_NEXT|BUTTON_REPEAT)
#define CB_SCROLL_LEFT (BUTTON_HOME|BUTTON_REPEAT)
#define CB_SCROLL_RIGHT (BUTTON_VOL_UP|BUTTON_REPEAT)
#define CB_SCROLL_LEFT (BUTTON_SCROLL_BACK|BUTTON_REPEAT)
#define CB_SCROLL_RIGHT (BUTTON_SCROLL_FWD|BUTTON_REPEAT)
#else
#error No keymap defined!

View file

@ -366,27 +366,7 @@
#define CHC_SETTINGS_CANCEL BUTTON_RIGHT
#define CHC_SETTINGS_OK (BUTTON_SELECT|BUTTON_REPEAT)
#elif CONFIG_KEYPAD == XDUOO_X3_PAD
#define CHC_QUIT BUTTON_POWER
#define CHC_STARTSTOP BUTTON_PLAY
#define CHC_RESET BUTTON_OPTION
#define CHC_MENU BUTTON_HOME
#define CHC_SETTINGS_INC BUTTON_NEXT
#define CHC_SETTINGS_DEC BUTTON_PREV
#define CHC_SETTINGS_OK BUTTON_PLAY
#define CHC_SETTINGS_CANCEL BUTTON_POWER
#elif CONFIG_KEYPAD == XDUOO_X3II_PAD
#define CHC_QUIT BUTTON_POWER
#define CHC_STARTSTOP BUTTON_PLAY
#define CHC_RESET BUTTON_OPTION
#define CHC_MENU BUTTON_HOME
#define CHC_SETTINGS_INC BUTTON_NEXT
#define CHC_SETTINGS_DEC BUTTON_PREV
#define CHC_SETTINGS_OK BUTTON_PLAY
#define CHC_SETTINGS_CANCEL BUTTON_POWER
#elif CONFIG_KEYPAD == XDUOO_X20_PAD
#elif (CONFIG_KEYPAD == XDUOO_X3_PAD) || (CONFIG_KEYPAD == XDUOO_X3II_PAD) || (CONFIG_KEYPAD == XDUOO_X20_PAD)
#define CHC_QUIT BUTTON_POWER
#define CHC_STARTSTOP BUTTON_PLAY
#define CHC_RESET BUTTON_OPTION
@ -406,7 +386,7 @@
#define CHC_SETTINGS_OK BUTTON_PLAY
#define CHC_SETTINGS_CANCEL BUTTON_POWER
#elif CONFIG_KEYPAD == IHIFI_770_PAD
#elif (CONFIG_KEYPAD == IHIFI_770_PAD) || (CONFIG_KEYPAD == IHIFI_800_PAD)
#define CHC_QUIT BUTTON_POWER
#define CHC_STARTSTOP BUTTON_PLAY
#define CHC_RESET (BUTTON_PLAY|BUTTON_REPEAT)
@ -416,15 +396,15 @@
#define CHC_SETTINGS_OK BUTTON_PLAY
#define CHC_SETTINGS_CANCEL BUTTON_HOME
#elif CONFIG_KEYPAD == IHIFI_800_PAD
#elif CONFIG_KEYPAD == EROSQ_PAD
#define CHC_QUIT BUTTON_POWER
#define CHC_STARTSTOP BUTTON_PLAY
#define CHC_RESET (BUTTON_PLAY|BUTTON_REPEAT)
#define CHC_MENU BUTTON_HOME
#define CHC_SETTINGS_INC BUTTON_VOL_UP
#define CHC_SETTINGS_DEC BUTTON_VOL_DOWN
#define CHC_RESET BUTTON_BACK
#define CHC_MENU BUTTON_MENU
#define CHC_SETTINGS_INC BUTTON_NEXT
#define CHC_SETTINGS_DEC BUTTON_PREV
#define CHC_SETTINGS_OK BUTTON_PLAY
#define CHC_SETTINGS_CANCEL BUTTON_HOME
#define CHC_SETTINGS_CANCEL BUTTON_POWER
#else
#error No keymap defined!
@ -481,7 +461,7 @@ static struct {
} timer_holder[MAX_PLAYERS];
static int run_timer(int nr);
static int chessclock_set_int(char* string,
static int chessclock_set_int(char* string,
int* variable,
int step,
int min,
@ -784,7 +764,7 @@ static int run_timer(int nr)
return retval;
}
static int chessclock_set_int(char* string,
static int chessclock_set_int(char* string,
int* variable,
int step,
int min,
@ -856,4 +836,3 @@ static char * show_time(int seconds)
rb->snprintf(buf, sizeof(buf), "%02d:%02d", seconds/60, seconds%60);
return buf;
}

View file

@ -57,7 +57,7 @@
#ifndef EXTERN
#define EXTERN extern
#endif
typedef unsigned char byte; /* sizeof(byte)==1 */
typedef unsigned short word; /* sizeof(word)>=2 */
@ -390,11 +390,11 @@ static void op_system (word opcode)
break;
case 0xfc:
scroll_left();
break;
break;
case 0xfd:
DBG_(printf("SUPER: quit the emulator\n"));
chip8_reset();
break;
break;
case 0xfe:
DBG_(printf("SUPER: set CHIP-8 graphic mode\n"));
memset (chip8_display,0,sizeof(chip8_display));
@ -404,7 +404,7 @@ static void op_system (word opcode)
DBG_(printf("SUPER: set SCHIP graphic mode\n"));
memset (chip8_display,0,sizeof(chip8_display));
chip8_super = 1;
break;
break;
#endif
case 0xe0:
memset (chip8_display,0,sizeof(chip8_display));
@ -553,7 +553,7 @@ static void op_sprite (word opcode)
x &= 64-1;
y &= 32-1;
q=chip8_display+y*CHIP8_WIDTH*2;
if(n == 0)
if(n == 0)
n = 16;
if (n+y>32)
n=32-y;
@ -838,7 +838,7 @@ STATIC void chip8_execute(void)
--chip8_regs.delay;
if (chip8_regs.sound)
if (--chip8_regs.sound == 0)
chip8_sound_off();
chip8_sound_off();
/* Update the machine status */
chip8_interrupt ();
@ -1092,7 +1092,7 @@ CONFIG_KEYPAD == SANSA_M200_PAD
#define CHIP8_KEY8 BUTTON_DOWN
#define CHIP8_KEY9 BUTTON_VIEW
#define CHIP8_KEY0 BUTTON_VOL_DOWN
#elif CONFIG_KEYPAD == PHILIPS_SA9200_PAD
#define CHIP8_OFF BUTTON_POWER
#define CHIP8_KEY1 BUTTON_LEFT
@ -1251,23 +1251,7 @@ CONFIG_KEYPAD == MROBE500_PAD
#define CHIP8_KEY6 BUTTON_RIGHT
#define CHIP8_KEY8 BUTTON_LEFT
#elif CONFIG_KEYPAD == XDUOO_X3_PAD
#define CHIP8_OFF BUTTON_POWER
#define CHIP8_KEY2 BUTTON_HOME
#define CHIP8_KEY4 BUTTON_PREV
#define CHIP8_KEY5 BUTTON_PLAY
#define CHIP8_KEY6 BUTTON_NEXT
#define CHIP8_KEY8 BUTTON_OPTION
#elif CONFIG_KEYPAD == XDUOO_X3II_PAD
#define CHIP8_OFF BUTTON_POWER
#define CHIP8_KEY2 BUTTON_HOME
#define CHIP8_KEY4 BUTTON_PREV
#define CHIP8_KEY5 BUTTON_PLAY
#define CHIP8_KEY6 BUTTON_NEXT
#define CHIP8_KEY8 BUTTON_OPTION
#elif CONFIG_KEYPAD == XDUOO_X20_PAD
#elif CONFIG_KEYPAD == XDUOO_X3_PAD || CONFIG_KEYPAD == XDUOO_X3II_PAD || CONFIG_KEYPAD == XDUOO_X20_PAD
#define CHIP8_OFF BUTTON_POWER
#define CHIP8_KEY2 BUTTON_HOME
#define CHIP8_KEY4 BUTTON_PREV
@ -1283,7 +1267,7 @@ CONFIG_KEYPAD == MROBE500_PAD
#define CHIP8_KEY6 BUTTON_NEXT
#define CHIP8_KEY8 BUTTON_OPTION
#elif CONFIG_KEYPAD == IHIFI_770_PAD
#elif CONFIG_KEYPAD == IHIFI_770_PAD || CONFIG_KEYPAD == IHIFI_800_PAD
#define CHIP8_OFF BUTTON_POWER
#define CHIP8_KEY2 BUTTON_NEXT
#define CHIP8_KEY4 BUTTON_HOME
@ -1291,12 +1275,12 @@ CONFIG_KEYPAD == MROBE500_PAD
#define CHIP8_KEY6 BUTTON_VOL_DOWN
#define CHIP8_KEY8 BUTTON_PREV
#elif CONFIG_KEYPAD == IHIFI_800_PAD
#elif CONFIG_KEYPAD == EROSQ_PAD
#define CHIP8_OFF BUTTON_POWER
#define CHIP8_KEY2 BUTTON_NEXT
#define CHIP8_KEY4 BUTTON_HOME
#define CHIP8_KEY5 BUTTON_VOL_UP
#define CHIP8_KEY6 BUTTON_VOL_DOWN
#define CHIP8_KEY4 BUTTON_MENU
#define CHIP8_KEY5 BUTTON_PLAY
#define CHIP8_KEY6 BUTTON_BACK
#define CHIP8_KEY8 BUTTON_PREV
#else
@ -1342,15 +1326,15 @@ static unsigned long cycles; /* Number of update cycles (50Hz) */
/****************************************************************************/
/* Turn sound on */
/****************************************************************************/
static void chip8_sound_on (void)
static void chip8_sound_on (void)
{
}
/****************************************************************************/
/* Turn sound off */
/****************************************************************************/
static void chip8_sound_off (void)
{
static void chip8_sound_off (void)
{
}
/****************************************************************************/
@ -1587,7 +1571,7 @@ enum plugin_status plugin_start(const void* parameter)
}
else
{
filename = (char*) parameter;
filename = (char*) parameter;
}
/* now go ahead and have fun! */

View file

@ -198,32 +198,7 @@ CONFIG_KEYPAD == MROBE500_PAD
#define ACTION BUTTON_SELECT
#define ACTIONTEXT "Select"
#elif CONFIG_KEYPAD == XDUOO_X3_PAD
#define QUIT BUTTON_POWER
#define ACTION BUTTON_PLAY
#define ACTIONTEXT "PLAY"
#elif CONFIG_KEYPAD == XDUOO_X3II_PAD
#define QUIT BUTTON_POWER
#define ACTION BUTTON_PLAY
#define ACTIONTEXT "PLAY"
#elif CONFIG_KEYPAD == XDUOO_X20_PAD
#define QUIT BUTTON_POWER
#define ACTION BUTTON_PLAY
#define ACTIONTEXT "PLAY"
#elif CONFIG_KEYPAD == FIIO_M3K_PAD
#define QUIT BUTTON_POWER
#define ACTION BUTTON_PLAY
#define ACTIONTEXT "PLAY"
#elif CONFIG_KEYPAD == IHIFI_770_PAD
#define QUIT BUTTON_POWER
#define ACTION BUTTON_PLAY
#define ACTIONTEXT "PLAY"
#elif CONFIG_KEYPAD == IHIFI_800_PAD
#elif CONFIG_KEYPAD == XDUOO_X3_PAD || CONFIG_KEYPAD == XDUOO_X3II_PAD || CONFIG_KEYPAD == XDUOO_X20_PAD || CONFIG_KEYPAD == FIIO_M3K_PAD || CONFIG_KEYPAD == IHIFI_770_PAD || CONFIG_KEYPAD == IHIFI_800_PAD || CONFIG_KEYPAD == EROSQ_PAD
#define QUIT BUTTON_POWER
#define ACTION BUTTON_PLAY
#define ACTIONTEXT "PLAY"
@ -735,7 +710,7 @@ static void chopDrawScene(void)
#elif LCD_DEPTH == 2
rb->lcd_set_foreground(LCD_WHITE);
#endif
#if LCD_WIDTH <= 128
rb->snprintf(s, sizeof(s), "Dist: %d", score);
#else
@ -781,7 +756,7 @@ static int chopMenu(int menunum)
{ "Normal", -1 },
{ "Steep", -1 },
};
MENUITEM_STRINGLIST(menu,"Chopper Menu",chopMenuCb,
"Resume Game","Start New Game",
"Level","Playback Control","Quit");

View file

@ -284,15 +284,7 @@
#define CLIX_BUTTON_RIGHT BUTTON_NEXT
#define CLIX_BUTTON_CLICK BUTTON_PLAY
#elif CONFIG_KEYPAD == XDUOO_X3II_PAD
#define CLIX_BUTTON_QUIT BUTTON_POWER
#define CLIX_BUTTON_UP BUTTON_HOME
#define CLIX_BUTTON_DOWN BUTTON_OPTION
#define CLIX_BUTTON_LEFT BUTTON_PREV
#define CLIX_BUTTON_RIGHT BUTTON_NEXT
#define CLIX_BUTTON_CLICK BUTTON_PLAY
#elif CONFIG_KEYPAD == XDUOO_X20_PAD
#elif CONFIG_KEYPAD == XDUOO_X3II_PAD || CONFIG_KEYPAD == XDUOO_X20_PAD
#define CLIX_BUTTON_QUIT BUTTON_POWER
#define CLIX_BUTTON_UP BUTTON_HOME
#define CLIX_BUTTON_DOWN BUTTON_OPTION
@ -308,7 +300,7 @@
#define CLIX_BUTTON_RIGHT BUTTON_NEXT
#define CLIX_BUTTON_CLICK BUTTON_PLAY
#elif CONFIG_KEYPAD == IHIFI_770_PAD
#elif CONFIG_KEYPAD == IHIFI_770_PAD || CONFIG_KEYPAD == IHIFI_800_PAD
#define CLIX_BUTTON_QUIT BUTTON_POWER
#define CLIX_BUTTON_UP BUTTON_PREV
#define CLIX_BUTTON_DOWN BUTTON_NEXT
@ -316,13 +308,13 @@
#define CLIX_BUTTON_RIGHT BUTTON_VOL_DOWN
#define CLIX_BUTTON_CLICK BUTTON_VOL_UP
#elif CONFIG_KEYPAD == IHIFI_800_PAD
#elif CONFIG_KEYPAD == EROSQ_PAD
#define CLIX_BUTTON_QUIT BUTTON_POWER
#define CLIX_BUTTON_UP BUTTON_PREV
#define CLIX_BUTTON_DOWN BUTTON_NEXT
#define CLIX_BUTTON_LEFT BUTTON_HOME
#define CLIX_BUTTON_RIGHT BUTTON_VOL_DOWN
#define CLIX_BUTTON_CLICK BUTTON_VOL_UP
#define CLIX_BUTTON_LEFT BUTTON_SCROLL_BACK
#define CLIX_BUTTON_RIGHT BUTTON_SCROLL_FWD
#define CLIX_BUTTON_CLICK BUTTON_PLAY
#else
#error "no keymap"

View file

@ -370,27 +370,7 @@
#define CUBE_HIGHSPEED (BUTTON_SELECT | BUTTON_REPEAT)
#define CUBE_PAUSE (BUTTON_LEFT | BUTTON_REPEAT)
#elif (CONFIG_KEYPAD == XDUOO_X3_PAD)
#define CUBE_QUIT BUTTON_POWER
#define CUBE_NEXT BUTTON_NEXT
#define CUBE_PREV BUTTON_PREV
#define CUBE_INC BUTTON_VOL_UP
#define CUBE_DEC BUTTON_VOL_DOWN
#define CUBE_MODE BUTTON_OPTION
#define CUBE_PAUSE BUTTON_HOME
#define CUBE_HIGHSPEED BUTTON_PLAY
#elif (CONFIG_KEYPAD == XDUOO_X3II_PAD)
#define CUBE_QUIT BUTTON_POWER
#define CUBE_NEXT BUTTON_NEXT
#define CUBE_PREV BUTTON_PREV
#define CUBE_INC BUTTON_VOL_UP
#define CUBE_DEC BUTTON_VOL_DOWN
#define CUBE_MODE BUTTON_OPTION
#define CUBE_PAUSE BUTTON_HOME
#define CUBE_HIGHSPEED BUTTON_PLAY
#elif (CONFIG_KEYPAD == XDUOO_X20_PAD)
#elif (CONFIG_KEYPAD == XDUOO_X3_PAD) || (CONFIG_KEYPAD == XDUOO_X3II_PAD) || (CONFIG_KEYPAD == XDUOO_X20_PAD)
#define CUBE_QUIT BUTTON_POWER
#define CUBE_NEXT BUTTON_NEXT
#define CUBE_PREV BUTTON_PREV
@ -410,7 +390,7 @@
#define CUBE_PAUSE BUTTON_HOME
#define CUBE_HIGHSPEED BUTTON_PLAY
#elif (CONFIG_KEYPAD == IHIFI_770_PAD)
#elif (CONFIG_KEYPAD == IHIFI_770_PAD) || (CONFIG_KEYPAD == IHIFI_800_PAD)
#define CUBE_QUIT BUTTON_POWER
#define CUBE_NEXT BUTTON_NEXT
#define CUBE_PREV BUTTON_PREV
@ -420,14 +400,14 @@
#define CUBE_PAUSE BUTTON_HOME
#define CUBE_HIGHSPEED BUTTON_PLAY
#elif (CONFIG_KEYPAD == IHIFI_800_PAD)
#elif CONFIG_KEYPAD == EROSQ_PAD
#define CUBE_QUIT BUTTON_POWER
#define CUBE_NEXT BUTTON_NEXT
#define CUBE_PREV BUTTON_PREV
#define CUBE_INC BUTTON_VOL_UP
#define CUBE_DEC BUTTON_VOL_DOWN
#define CUBE_MODE (BUTTON_HOME | BUTTON_POWER)
#define CUBE_PAUSE BUTTON_HOME
#define CUBE_INC BUTTON_SCROLL_FWD
#define CUBE_DEC BUTTON_SCROLL_BACK
#define CUBE_MODE BUTTON_MENU
#define CUBE_PAUSE BUTTON_BACK
#define CUBE_HIGHSPEED BUTTON_PLAY
#else
@ -666,7 +646,7 @@ static void cube_draw(void)
{
#if LCD_DEPTH > 1 || defined(USEGSLIB)
case SOLID:
old_foreground = mylcd_get_foreground();
for (i = 0; i < 6; i++)
{
@ -882,7 +862,7 @@ enum plugin_status plugin_start(const void* parameter)
t_disp = DISP_TIME;
redraw = true;
break;
case CUBE_NEXT:
if (++curr > 2)
curr = 0;
@ -947,5 +927,3 @@ enum plugin_status plugin_start(const void* parameter)
return PLUGIN_OK;
}

View file

@ -566,18 +566,7 @@ void I_ShutdownGraphics(void)
#define DOOMBUTTON_ENTER BUTTON_PLAY
#define DOOMBUTTON_WEAPON BUTTON_VOL_UP
#elif CONFIG_KEYPAD == XDUOO_X3II_PAD
#define DOOMBUTTON_UP BUTTON_HOME
#define DOOMBUTTON_DOWN BUTTON_OPTION
#define DOOMBUTTON_LEFT BUTTON_PREV
#define DOOMBUTTON_RIGHT BUTTON_NEXT
#define DOOMBUTTON_SHOOT BUTTON_PLAY
#define DOOMBUTTON_OPEN (BUTTON_HOME | BUTTON_POWER)
#define DOOMBUTTON_ESC BUTTON_POWER
#define DOOMBUTTON_ENTER BUTTON_PLAY
#define DOOMBUTTON_WEAPON BUTTON_VOL_UP
#elif CONFIG_KEYPAD == XDUOO_X20_PAD
#elif CONFIG_KEYPAD == XDUOO_X3II_PAD || CONFIG_KEYPAD == XDUOO_X20_PAD
#define DOOMBUTTON_UP BUTTON_HOME
#define DOOMBUTTON_DOWN BUTTON_OPTION
#define DOOMBUTTON_LEFT BUTTON_PREV
@ -599,7 +588,7 @@ void I_ShutdownGraphics(void)
#define DOOMBUTTON_ENTER BUTTON_PLAY
#define DOOMBUTTON_WEAPON BUTTON_VOL_UP
#elif CONFIG_KEYPAD == IHIFI_770_PAD
#elif CONFIG_KEYPAD == IHIFI_770_PAD || CONFIG_KEYPAD == IHIFI_800_PAD
#define DOOMBUTTON_UP BUTTON_PREV
#define DOOMBUTTON_DOWN BUTTON_NEXT
#define DOOMBUTTON_LEFT BUTTON_HOME
@ -611,17 +600,17 @@ void I_ShutdownGraphics(void)
#define DOOMBUTTON_WEAPON (BUTTON_PLAY|BUTTON_REPEAT)
#define DOOMBUTTON_MAP (BUTTON_POWER|BUTTON_REPEAT)
#elif CONFIG_KEYPAD == IHIFI_800_PAD
#elif CONFIG_KEYPAD == EROSQ_PAD
#define DOOMBUTTON_UP BUTTON_PREV
#define DOOMBUTTON_DOWN BUTTON_NEXT
#define DOOMBUTTON_LEFT BUTTON_HOME
#define DOOMBUTTON_RIGHT BUTTON_VOL_DOWN
#define DOOMBUTTON_OPEN BUTTON_PLAY
#define DOOMBUTTON_ESC BUTTON_POWER
#define DOOMBUTTON_ENTER BUTTON_VOL_UP
#define DOOMBUTTON_SHOOT BUTTON_VOL_UP
#define DOOMBUTTON_WEAPON (BUTTON_PLAY|BUTTON_REPEAT)
#define DOOMBUTTON_MAP (BUTTON_POWER|BUTTON_REPEAT)
#define DOOMBUTTON_LEFT BUTTON_SCROLL_BACK
#define DOOMBUTTON_RIGHT BUTTON_SCROLL_FWD
#define DOOMBUTTON_SHOOT BUTTON_PLAY
#define DOOMBUTTON_OPEN BUTTON_BACK
#define DOOMBUTTON_ESC BUTTON_MENU
#define DOOMBUTTON_ENTER BUTTON_PLAY
#define DOOMBUTTON_WEAPON BUTTON_VOL_UP
#define DOOMBUTTON_MAP BUTTON_VOL_DOWN
#else
#error Keymap not defined!
@ -745,7 +734,7 @@ static inline void getkey()
D_PostEvent(&event);
}
#endif
#endif
#endif
newbuttonstate = rb->button_status();
#ifdef DOOMBUTTON_SCROLLWHEEL
newbuttonstate |= read_scroll_wheel();
@ -954,7 +943,7 @@ void I_FinishUpdate (void)
{
int count;
byte *src = d_screens[0];
#if (CONFIG_LCD == LCD_H300) && !defined(SIMULATOR)
count = SCREENWIDTH*SCREENHEIGHT;
@ -1091,7 +1080,7 @@ void I_FinishUpdate (void)
*dst++ = palette[*src++];
while (--count);
}
rb->lcd_update();
rb->lcd_update();
#else /* !HAVE_LCD_COLOR */
unsigned char *dst;
@ -1108,8 +1097,8 @@ void I_FinishUpdate (void)
grey_ub_gray_bitmap(greybuffer, 0, y, SCREENWIDTH, 1);
}
#endif
#endif
#endif
#endif
}
//
@ -1136,7 +1125,7 @@ void I_InitGraphics(void)
printf("Starting Graphics engine\n");
noprintf=1;
#if defined(HAVE_LCD_MODES)
#if (HAVE_LCD_MODES & LCD_MODE_PAL256)
rb->lcd_set_mode(LCD_MODE_PAL256);

View file

@ -334,16 +334,7 @@ GREY_INFO_STRUCT
# define FFT_AMP_SCALE BUTTON_PLAY
# define FFT_QUIT BUTTON_POWER
#elif (CONFIG_KEYPAD == XDUOO_X3II_PAD)
# define FFT_PREV_GRAPH BUTTON_PREV
# define FFT_NEXT_GRAPH BUTTON_NEXT
# define FFT_ORIENTATION BUTTON_HOME
# define FFT_FREQ_SCALE BUTTON_OPTION
# define FFT_WINDOW (BUTTON_HOME|BUTTON_POWER)
# define FFT_AMP_SCALE BUTTON_PLAY
# define FFT_QUIT BUTTON_POWER
#elif (CONFIG_KEYPAD == XDUOO_X20_PAD)
#elif (CONFIG_KEYPAD == XDUOO_X3II_PAD) || (CONFIG_KEYPAD == XDUOO_X20_PAD)
# define FFT_PREV_GRAPH BUTTON_PREV
# define FFT_NEXT_GRAPH BUTTON_NEXT
# define FFT_ORIENTATION BUTTON_HOME
@ -361,7 +352,7 @@ GREY_INFO_STRUCT
# define FFT_AMP_SCALE BUTTON_PLAY
# define FFT_QUIT BUTTON_POWER
#elif (CONFIG_KEYPAD == IHIFI_770_PAD)
#elif (CONFIG_KEYPAD == IHIFI_770_PAD) || (CONFIG_KEYPAD == IHIFI_800_PAD)
# define FFT_PREV_GRAPH BUTTON_PREV
# define FFT_NEXT_GRAPH BUTTON_NEXT
# define FFT_ORIENTATION BUTTON_HOME
@ -370,13 +361,13 @@ GREY_INFO_STRUCT
# define FFT_AMP_SCALE BUTTON_PLAY
# define FFT_QUIT BUTTON_POWER
#elif (CONFIG_KEYPAD == IHIFI_800_PAD)
# define FFT_PREV_GRAPH BUTTON_PREV
# define FFT_NEXT_GRAPH BUTTON_NEXT
# define FFT_ORIENTATION BUTTON_HOME
# define FFT_FREQ_SCALE BUTTON_VOL_UP
# define FFT_WINDOW BUTTON_VOL_DOWN
# define FFT_AMP_SCALE BUTTON_PLAY
#elif (CONFIG_KEYPAD == EROSQ_PAD)
# define FFT_PREV_GRAPH BUTTON_SCROLL_BACK
# define FFT_NEXT_GRAPH BUTTON_SCROLL_FWD
# define FFT_ORIENTATION BUTTON_VOL_UP
# define FFT_FREQ_SCALE BUTTON_VOL_DOWN
# define FFT_WINDOW BUTTON_BACK
# define FFT_AMP_SCALE BUTTON_MENU
# define FFT_QUIT BUTTON_POWER
#elif !defined(HAVE_TOUCHSCREEN)
@ -530,7 +521,7 @@ static struct fft_config
int amp_scale;
int freq_scale;
int window_func;
} fft_disk =
} fft_disk =
{
/* Defaults */
.orientation = FFT_OR_VERT,
@ -647,7 +638,7 @@ static void apply_window_func(enum fft_window_func mode)
/* Calculates the magnitudes from complex numbers and returns the maximum */
static unsigned calc_magnitudes(enum fft_amp_scale scale)
{
/* A major assumption made when calculating the Q*MAX constants
/* A major assumption made when calculating the Q*MAX constants
* is that the maximum magnitude is 29 bits long. */
unsigned this_max = 0;
kiss_fft_cpx *this_output = output[output_head] + 1; /* skip DC */
@ -806,7 +797,7 @@ static void draw_lines_vertical(unsigned this_max, unsigned graph_max)
{
int bins_acc = LCD_WIDTH / 2;
unsigned bins_max = 0;
for(int i = 0, x = 0; i < ARRAYLEN_PLOT; ++i)
{
unsigned bin = plot[i];
@ -1107,7 +1098,7 @@ static inline bool fft_get_fft(void)
/* This block can introduce discontinuities in our data. Meaning, the
* FFT will not be done a continuous segment of the signal. Which can
* be bad. Or not.
*
*
* Anyway, this is a demo, not a scientific tool. If you want accuracy,
* do a proper spectrum analysis.*/
@ -1409,7 +1400,7 @@ static void fft_setting_update(unsigned which)
[FFT_OR_HORZ] = draw_bars_horizontal,
[FFT_OR_VERT] = draw_bars_vertical,
},
[FFT_DM_SPECTROGRAM] =
[FFT_DM_SPECTROGRAM] =
{
[FFT_OR_HORZ] = draw_spectrogram_horizontal,
[FFT_OR_VERT] = draw_spectrogram_vertical,
@ -1533,7 +1524,7 @@ static void fft_cleanup(void)
{
myosd_destroy();
fft_close_fft();
fft_close_fft();
#ifdef HAVE_ADJUSTABLE_CPU_FREQ
rb->cancel_cpu_boost();

View file

@ -436,31 +436,7 @@
#define FLIPIT_STEP_BY_STEP (BUTTON_LEFT|BUTTON_VOLUP)
#define FLIPIT_TOGGLE BUTTON_SELECT
#elif CONFIG_KEYPAD == XDUOO_X3_PAD
#define FLIPIT_LEFT BUTTON_PREV
#define FLIPIT_RIGHT BUTTON_NEXT
#define FLIPIT_UP BUTTON_HOME
#define FLIPIT_DOWN BUTTON_OPTION
#define FLIPIT_QUIT BUTTON_POWER
#define FLIPIT_SHUFFLE (BUTTON_HOME | BUTTON_PREV)
#define FLIPIT_SOLVE (BUTTON_HOME | BUTTON_NEXT)
#define FLIPIT_STEP_BY_STEP (BUTTON_HOME | BUTTON_PLAY)
#define FLIPIT_TOGGLE BUTTON_PLAY
#elif CONFIG_KEYPAD == XDUOO_X3II_PAD
#define FLIPIT_LEFT BUTTON_PREV
#define FLIPIT_RIGHT BUTTON_NEXT
#define FLIPIT_UP BUTTON_HOME
#define FLIPIT_DOWN BUTTON_OPTION
#define FLIPIT_QUIT BUTTON_POWER
#define FLIPIT_SHUFFLE (BUTTON_HOME | BUTTON_PREV)
#define FLIPIT_SOLVE (BUTTON_HOME | BUTTON_NEXT)
#define FLIPIT_STEP_BY_STEP (BUTTON_HOME | BUTTON_PLAY)
#define FLIPIT_TOGGLE BUTTON_PLAY
#elif CONFIG_KEYPAD == XDUOO_X20_PAD
#elif CONFIG_KEYPAD == XDUOO_X3_PAD || CONFIG_KEYPAD == XDUOO_X3II_PAD || CONFIG_KEYPAD == XDUOO_X20_PAD
#define FLIPIT_LEFT BUTTON_PREV
#define FLIPIT_RIGHT BUTTON_NEXT
@ -484,7 +460,7 @@
#define FLIPIT_STEP_BY_STEP (BUTTON_HOME | BUTTON_PLAY)
#define FLIPIT_TOGGLE BUTTON_PLAY
#elif CONFIG_KEYPAD == IHIFI_770_PAD
#elif CONFIG_KEYPAD == IHIFI_770_PAD || CONFIG_KEYPAD == IHIFI_800_PAD
#define FLIPIT_LEFT BUTTON_HOME
#define FLIPIT_RIGHT BUTTON_VOL_DOWN
@ -496,16 +472,16 @@
#define FLIPIT_STEP_BY_STEP (BUTTON_POWER | BUTTON_PLAY)
#define FLIPIT_TOGGLE BUTTON_PLAY
#elif CONFIG_KEYPAD == IHIFI_800_PAD
#elif CONFIG_KEYPAD == EROSQ_PAD
#define FLIPIT_LEFT BUTTON_HOME
#define FLIPIT_RIGHT BUTTON_VOL_DOWN
#define FLIPIT_LEFT BUTTON_SCROLL_BACK
#define FLIPIT_RIGHT BUTTON_SCROLL_FWD
#define FLIPIT_UP BUTTON_PREV
#define FLIPIT_DOWN BUTTON_NEXT
#define FLIPIT_QUIT BUTTON_POWER
#define FLIPIT_SHUFFLE (BUTTON_POWER | BUTTON_PREV)
#define FLIPIT_SOLVE (BUTTON_POWER | BUTTON_NEXT)
#define FLIPIT_STEP_BY_STEP (BUTTON_POWER | BUTTON_PLAY)
#define FLIPIT_SHUFFLE BUTTON_MENU
#define FLIPIT_SOLVE BUTTON_VOL_DOWN
#define FLIPIT_STEP_BY_STEP BUTTON_VOL_UP
#define FLIPIT_TOGGLE BUTTON_PLAY
#else
@ -562,8 +538,8 @@ static int cursor_pos, moves;
/* draw a spot at the coordinates (x,y), range of p is 0-19 */
static void draw_spot(int p)
{
rb->lcd_bitmap_part( flipit_tokens, 0, spots[p] * TK_HEIGHT,
STRIDE(SCREEN_MAIN, BMPWIDTH_flipit_tokens,
rb->lcd_bitmap_part( flipit_tokens, 0, spots[p] * TK_HEIGHT,
STRIDE(SCREEN_MAIN, BMPWIDTH_flipit_tokens,
BMPHEIGHT_flipit_tokens),
GRID_LEFT + (p%5) * (TK_WIDTH+TK_SPACE),
GRID_TOP + (p/5) * (TK_HEIGHT+TK_SPACE),
@ -571,7 +547,7 @@ static void draw_spot(int p)
}
/* draw the cursor at the current cursor position */
static void draw_cursor(void)
static void draw_cursor(void)
{
#ifdef HAVE_LCD_COLOR
rb->lcd_bitmap_transparent( flipit_cursor,
@ -612,7 +588,7 @@ static inline void clear_cursor(void)
}
/* check if the puzzle is finished */
static bool flipit_finished(void)
static bool flipit_finished(void)
{
int i;
for (i=0; i<20; i++)
@ -653,7 +629,7 @@ static void flipit_toggle(void)
}
/* move the cursor in any direction */
static void move_cursor(int x, int y)
static void move_cursor(int x, int y)
{
if (!(flipit_finished())) {
clear_cursor();
@ -665,7 +641,7 @@ static void move_cursor(int x, int y)
}
/* initialize the board */
static void flipit_init(void)
static void flipit_init(void)
{
int i;
@ -690,7 +666,7 @@ static void flipit_init(void)
}
/* the main game loop */
static bool flipit_loop(void)
static bool flipit_loop(void)
{
int i;
int button;
@ -775,7 +751,7 @@ static bool flipit_loop(void)
/*move cursor though the entire field*/
#ifdef FLIPIT_SCROLLWHEEL
case FLIPIT_PREV:
case FLIPIT_PREV|BUTTON_REPEAT:
case FLIPIT_PREV|BUTTON_REPEAT:
if ((cursor_pos)%5 == 0) {
move_cursor(-1, -1);
}

View file

@ -458,19 +458,7 @@
#define FRACTAL_PRECISION_DEC (BUTTON_PLAY | BUTTON_PREV)
#define FRACTAL_RESET (BUTTON_HOME | BUTTON_POWER)
#elif CONFIG_KEYPAD == XDUOO_X3II_PAD
#define FRACTAL_QUIT BUTTON_POWER
#define FRACTAL_UP BUTTON_HOME
#define FRACTAL_DOWN BUTTON_OPTION
#define FRACTAL_LEFT BUTTON_PREV
#define FRACTAL_RIGHT BUTTON_NEXT
#define FRACTAL_ZOOM_IN BUTTON_VOL_UP
#define FRACTAL_ZOOM_OUT BUTTON_VOL_DOWN
#define FRACTAL_PRECISION_INC (BUTTON_PLAY | BUTTON_NEXT)
#define FRACTAL_PRECISION_DEC (BUTTON_PLAY | BUTTON_PREV)
#define FRACTAL_RESET (BUTTON_HOME | BUTTON_POWER)
#elif CONFIG_KEYPAD == XDUOO_X20_PAD
#elif CONFIG_KEYPAD == XDUOO_X3II_PAD || CONFIG_KEYPAD == XDUOO_X20_PAD
#define FRACTAL_QUIT BUTTON_POWER
#define FRACTAL_UP BUTTON_HOME
#define FRACTAL_DOWN BUTTON_OPTION
@ -494,7 +482,7 @@
#define FRACTAL_PRECISION_DEC (BUTTON_PLAY | BUTTON_PREV)
#define FRACTAL_RESET (BUTTON_HOME | BUTTON_POWER)
#elif CONFIG_KEYPAD == IHIFI_770_PAD
#elif CONFIG_KEYPAD == IHIFI_770_PAD || CONFIG_KEYPAD == IHIFI_800_PAD
#define FRACTAL_QUIT BUTTON_POWER
#define FRACTAL_UP BUTTON_PREV
#define FRACTAL_DOWN BUTTON_NEXT
@ -506,17 +494,17 @@
#define FRACTAL_PRECISION_DEC (BUTTON_POWER | BUTTON_PREV)
#define FRACTAL_RESET (BUTTON_POWER | BUTTON_HOME)
#elif CONFIG_KEYPAD == IHIFI_800_PAD
#elif CONFIG_KEYPAD == EROSQ_PAD
#define FRACTAL_QUIT BUTTON_POWER
#define FRACTAL_UP BUTTON_PREV
#define FRACTAL_DOWN BUTTON_NEXT
#define FRACTAL_LEFT BUTTON_HOME
#define FRACTAL_RIGHT BUTTON_VOL_DOWN
#define FRACTAL_ZOOM_IN (BUTTON_POWER | BUTTON_VOL_UP)
#define FRACTAL_ZOOM_OUT (BUTTON_POWER | BUTTON_VOL_DOWN)
#define FRACTAL_PRECISION_INC (BUTTON_POWER | BUTTON_NEXT)
#define FRACTAL_PRECISION_DEC (BUTTON_POWER | BUTTON_PREV)
#define FRACTAL_RESET (BUTTON_POWER | BUTTON_HOME)
#define FRACTAL_LEFT BUTTON_SCROLL_BACK
#define FRACTAL_RIGHT BUTTON_SCROLL_FWD
#define FRACTAL_ZOOM_IN BUTTON_VOL_UP
#define FRACTAL_ZOOM_OUT BUTTON_VOL_DOWN
#define FRACTAL_PRECISION_INC BUTTON_MENU
#define FRACTAL_PRECISION_DEC BUTTON_BACK
#define FRACTAL_RESET BUTTON_PLAY
#else
#error No keymap defined!
@ -555,4 +543,3 @@
#endif
#endif

View file

@ -443,19 +443,7 @@
#define GBN_BUTTON_CONTEXT BUTTON_PLAY | BUTTON_REPEAT
#define GBN_BUTTON_NEXT_VAR BUTTON_HOME | BUTTON_PWRALT
#elif (CONFIG_KEYPAD == XDUOO_X3II_PAD)
#define GBN_BUTTON_UP BUTTON_HOME
#define GBN_BUTTON_DOWN BUTTON_OPTION
#define GBN_BUTTON_LEFT BUTTON_PREV
#define GBN_BUTTON_RIGHT BUTTON_NEXT
#define GBN_BUTTON_RETREAT BUTTON_VOL_DOWN
#define GBN_BUTTON_ADVANCE BUTTON_VOL_UP
#define GBN_BUTTON_MENU BUTTON_POWER
#define GBN_BUTTON_PLAY BUTTON_PLAY | BUTTON_REL
#define GBN_BUTTON_CONTEXT BUTTON_PLAY | BUTTON_REPEAT
#define GBN_BUTTON_NEXT_VAR BUTTON_HOME | BUTTON_POWER
#elif (CONFIG_KEYPAD == XDUOO_X20_PAD)
#elif (CONFIG_KEYPAD == XDUOO_X3II_PAD) || (CONFIG_KEYPAD == XDUOO_X20_PAD)
#define GBN_BUTTON_UP BUTTON_HOME
#define GBN_BUTTON_DOWN BUTTON_OPTION
#define GBN_BUTTON_LEFT BUTTON_PREV
@ -479,7 +467,7 @@
#define GBN_BUTTON_CONTEXT BUTTON_PLAY | BUTTON_REPEAT
#define GBN_BUTTON_NEXT_VAR BUTTON_HOME | BUTTON_POWER
#elif (CONFIG_KEYPAD == IHIFI_770_PAD)
#elif (CONFIG_KEYPAD == IHIFI_770_PAD) || (CONFIG_KEYPAD == IHIFI_800_PAD)
#define GBN_BUTTON_UP BUTTON_PREV
#define GBN_BUTTON_DOWN BUTTON_NEXT
@ -492,18 +480,17 @@
#define GBN_BUTTON_CONTEXT BUTTON_PLAY | BUTTON_REPEAT
#define GBN_BUTTON_NEXT_VAR BUTTON_POWER | BUTTON_HOME
#elif (CONFIG_KEYPAD == IHIFI_800_PAD)
#elif (CONFIG_KEYPAD == EROSQ_PAD)
#define GBN_BUTTON_UP BUTTON_PREV
#define GBN_BUTTON_DOWN BUTTON_NEXT
#define GBN_BUTTON_LEFT BUTTON_HOME
#define GBN_BUTTON_RIGHT BUTTON_VOL_DOWN
#define GBN_BUTTON_RETREAT BUTTON_POWER | BUTTON_VOL_DOWN
#define GBN_BUTTON_ADVANCE BUTTON_POWER | BUTTON_VOL_UP
#define GBN_BUTTON_MENU BUTTON_POWER
#define GBN_BUTTON_PLAY BUTTON_PLAY | BUTTON_REL
#define GBN_BUTTON_CONTEXT BUTTON_PLAY | BUTTON_REPEAT
#define GBN_BUTTON_NEXT_VAR BUTTON_POWER | BUTTON_HOME
#define GBN_BUTTON_LEFT BUTTON_SCROLL_BACK
#define GBN_BUTTON_RIGHT BUTTON_SCROLL_FWD
#define GBN_BUTTON_RETREAT BUTTON_VOL_DOWN
#define GBN_BUTTON_ADVANCE BUTTON_VOL_UP
#define GBN_BUTTON_MENU BUTTON_MENU
#define GBN_BUTTON_PLAY BUTTON_PLAY
#define GBN_BUTTON_CONTEXT BUTTON_MENU | BUTTON_REPEAT
#define GBN_BUTTON_NEXT_VAR BUTTON_BACK
#else
#error Unsupported keypad

View file

@ -476,22 +476,7 @@
#define IMGVIEW_MENU BUTTON_POWER
#define IMGVIEW_SLIDE_SHOW (BUTTON_HOME|BUTTON_PWRALT)
#elif CONFIG_KEYPAD == XDUOO_X3II_PAD
#define IMGVIEW_ZOOM_PRE BUTTON_PLAY
#define IMGVIEW_ZOOM_IN (BUTTON_PLAY | BUTTON_REL)
#define IMGVIEW_ZOOM_OUT (BUTTON_PLAY | BUTTON_REPEAT)
#define IMGVIEW_UP BUTTON_HOME
#define IMGVIEW_DOWN BUTTON_OPTION
#define IMGVIEW_LEFT BUTTON_PREV
#define IMGVIEW_RIGHT BUTTON_NEXT
#define IMGVIEW_NEXT BUTTON_VOL_UP
#define IMGVIEW_NEXT_REPEAT (BUTTON_VOL_UP|BUTTON_REPEAT)
#define IMGVIEW_PREVIOUS BUTTON_VOL_DOWN
#define IMGVIEW_PREVIOUS_REPEAT (BUTTON_VOL_DOWN|BUTTON_REPEAT)
#define IMGVIEW_MENU BUTTON_POWER
#define IMGVIEW_SLIDE_SHOW (BUTTON_HOME|BUTTON_POWER)
#elif CONFIG_KEYPAD == XDUOO_X20_PAD
#elif CONFIG_KEYPAD == XDUOO_X3II_PAD || CONFIG_KEYPAD == XDUOO_X20_PAD
#define IMGVIEW_ZOOM_PRE BUTTON_PLAY
#define IMGVIEW_ZOOM_IN (BUTTON_PLAY | BUTTON_REL)
#define IMGVIEW_ZOOM_OUT (BUTTON_PLAY | BUTTON_REPEAT)
@ -521,7 +506,7 @@
#define IMGVIEW_MENU BUTTON_POWER
#define IMGVIEW_SLIDE_SHOW (BUTTON_HOME|BUTTON_POWER)
#elif CONFIG_KEYPAD == IHIFI_770_PAD
#elif CONFIG_KEYPAD == IHIFI_770_PAD || CONFIG_KEYPAD == IHIFI_800_PAD
#define IMGVIEW_ZOOM_PRE BUTTON_PLAY
#define IMGVIEW_ZOOM_IN (BUTTON_PLAY | BUTTON_REL)
#define IMGVIEW_ZOOM_OUT (BUTTON_PLAY | BUTTON_REPEAT)
@ -536,20 +521,20 @@
#define IMGVIEW_MENU BUTTON_POWER
#define IMGVIEW_SLIDE_SHOW (BUTTON_HOME|BUTTON_POWER)
#elif CONFIG_KEYPAD == IHIFI_800_PAD
#elif CONFIG_KEYPAD == EROSQ_PAD
#define IMGVIEW_ZOOM_PRE BUTTON_PLAY
#define IMGVIEW_ZOOM_IN (BUTTON_PLAY | BUTTON_REL)
#define IMGVIEW_ZOOM_OUT (BUTTON_PLAY | BUTTON_REPEAT)
#define IMGVIEW_UP BUTTON_PREV
#define IMGVIEW_DOWN BUTTON_NEXT
#define IMGVIEW_LEFT BUTTON_HOME
#define IMGVIEW_RIGHT (BUTTON_PLAY|BUTTON_POWER)
#define IMGVIEW_LEFT BUTTON_SCROLL_BACK
#define IMGVIEW_RIGHT BUTTON_SCROLL_FWD
#define IMGVIEW_NEXT BUTTON_VOL_UP
#define IMGVIEW_NEXT_REPEAT (BUTTON_VOL_UP|BUTTON_REPEAT)
#define IMGVIEW_PREVIOUS BUTTON_VOL_DOWN
#define IMGVIEW_PREVIOUS_REPEAT (BUTTON_VOL_DOWN|BUTTON_REPEAT)
#define IMGVIEW_MENU BUTTON_POWER
#define IMGVIEW_SLIDE_SHOW (BUTTON_HOME|BUTTON_POWER)
#define IMGVIEW_MENU BUTTON_MENU
#define IMGVIEW_SLIDE_SHOW BUTTON_BACK
#else
#error No keymap defined!

View file

@ -268,14 +268,7 @@ CONFIG_KEYPAD == MROBE500_PAD
#define QUIT BUTTON_POWER
#define FIRE BUTTON_MENU
#elif CONFIG_KEYPAD == XDUOO_X3II_PAD
#define QUIT BUTTON_POWER
#define LEFT BUTTON_HOME
#define RIGHT BUTTON_VOL_DOWN
#define FIRE BUTTON_VOL_UP
#elif CONFIG_KEYPAD == XDUOO_X20_PAD
#elif CONFIG_KEYPAD == XDUOO_X3II_PAD || CONFIG_KEYPAD == XDUOO_X20_PAD
#define QUIT BUTTON_POWER
#define LEFT BUTTON_HOME
@ -289,19 +282,19 @@ CONFIG_KEYPAD == MROBE500_PAD
#define RIGHT BUTTON_VOL_DOWN
#define FIRE BUTTON_VOL_UP
#elif CONFIG_KEYPAD == IHIFI_770_PAD
#elif CONFIG_KEYPAD == IHIFI_770_PAD || CONFIG_KEYPAD == IHIFI_800_PAD
#define QUIT BUTTON_POWER
#define LEFT BUTTON_HOME
#define RIGHT BUTTON_VOL_DOWN
#define FIRE BUTTON_VOL_UP
#elif CONFIG_KEYPAD == IHIFI_800_PAD
#elif CONFIG_KEYPAD == EROSQ_PAD
#define QUIT BUTTON_POWER
#define LEFT BUTTON_HOME
#define RIGHT BUTTON_VOL_DOWN
#define FIRE BUTTON_VOL_UP
#define LEFT BUTTON_SCROLL_BACK
#define RIGHT BUTTON_SCROLL_FWD
#define FIRE BUTTON_PLAY
#else
#error INVADROX: Unsupported keypad
@ -829,8 +822,8 @@ static void draw_number(int x, int y, int num, int digits)
d = num % 10;
num = num / 10;
rb->lcd_bitmap_part(invadrox_numbers, d * NUMBERS_WIDTH, 0,
STRIDE( SCREEN_MAIN,
BMPWIDTH_invadrox_numbers,
STRIDE( SCREEN_MAIN,
BMPWIDTH_invadrox_numbers,
BMPHEIGHT_invadrox_numbers),
x + i * (NUMBERS_WIDTH + NUM_SPACING), y,
NUMBERS_WIDTH, FONT_HEIGHT);
@ -861,17 +854,17 @@ static void draw_lives(void)
int i;
/* Lives num */
rb->lcd_bitmap_part(invadrox_numbers, lives * NUMBERS_WIDTH, 0,
STRIDE( SCREEN_MAIN,
BMPWIDTH_invadrox_numbers,
BMPHEIGHT_invadrox_numbers),
STRIDE( SCREEN_MAIN,
BMPWIDTH_invadrox_numbers,
BMPHEIGHT_invadrox_numbers),
PLAYFIELD_X + LIVES_X, PLAYFIELD_Y + 2,
NUMBERS_WIDTH, FONT_HEIGHT);
/* Ships */
for (i = 0; i < (lives - 1); i++) {
rb->lcd_bitmap_part(invadrox_ships, 0, 0,
STRIDE( SCREEN_MAIN,
BMPWIDTH_invadrox_ships,
rb->lcd_bitmap_part(invadrox_ships, 0, 0,
STRIDE( SCREEN_MAIN,
BMPWIDTH_invadrox_ships,
BMPHEIGHT_invadrox_ships),
PLAYFIELD_X + LIVES_X + SHIP_WIDTH + i * (SHIP_WIDTH + NUM_SPACING),
PLAYFIELD_Y + 1, SHIP_WIDTH, SHIP_HEIGHT);
@ -893,11 +886,11 @@ static inline void draw_aliens(void)
int i;
for (i = 0; i < 5 * ALIENS; i++) {
rb->lcd_bitmap_part(invadrox_aliens, aliens[i].x & 1 ? ALIEN_WIDTH : 0,
rb->lcd_bitmap_part(invadrox_aliens, aliens[i].x & 1 ? ALIEN_WIDTH : 0,
aliens[i].type * ALIEN_HEIGHT,
STRIDE( SCREEN_MAIN,
BMPWIDTH_invadrox_aliens,
BMPHEIGHT_invadrox_aliens),
STRIDE( SCREEN_MAIN,
BMPWIDTH_invadrox_aliens,
BMPHEIGHT_invadrox_aliens),
PLAYFIELD_X + LIVES_X + aliens[i].x * ALIEN_SPEED,
ALIEN_START_Y + aliens[i].y * ALIEN_HEIGHT,
ALIEN_WIDTH, ALIEN_HEIGHT);
@ -1035,11 +1028,11 @@ static bool move_aliens(void)
x = PLAYFIELD_X + LIVES_X + aliens[curr_alien].x * ALIEN_SPEED;
y = ALIEN_START_Y + aliens[curr_alien].y * ALIEN_HEIGHT;
rb->lcd_bitmap_part(invadrox_aliens,
aliens[curr_alien].x & 1 ? ALIEN_WIDTH : 0,
aliens[curr_alien].x & 1 ? ALIEN_WIDTH : 0,
aliens[curr_alien].type * ALIEN_HEIGHT,
STRIDE( SCREEN_MAIN,
STRIDE( SCREEN_MAIN,
BMPWIDTH_invadrox_aliens,
BMPHEIGHT_invadrox_aliens),
BMPHEIGHT_invadrox_aliens),
x, y, ALIEN_WIDTH, ALIEN_HEIGHT);
if (!next_alien()) {
@ -1068,9 +1061,9 @@ static inline void draw_ship(void)
/* Draw ship */
rb->lcd_bitmap_part(invadrox_ships, 0, ship_frame * SHIP_HEIGHT,
STRIDE( SCREEN_MAIN,
STRIDE( SCREEN_MAIN,
BMPWIDTH_invadrox_ships,
BMPHEIGHT_invadrox_ships),
BMPHEIGHT_invadrox_ships),
ship_x, SHIP_Y, SHIP_WIDTH, SHIP_HEIGHT);
if (ship_hit) {
/* Alternate between frame 1 and 2 during hit */
@ -1095,7 +1088,7 @@ static inline void fire_alpha(int xc, int yc, unsigned color)
rb->lcd_set_foreground(color);
rb->lcd_set_drawmode(DRMODE_FG);
rb->lcd_mono_bitmap(invadrox_fire, xc - (FIRE_WIDTH/2), yc, FIRE_WIDTH, FIRE_HEIGHT);
rb->lcd_set_foreground(LCD_BLACK);
@ -1311,9 +1304,9 @@ static inline void draw_bomb(int i)
{
rb->lcd_bitmap_part(invadrox_bombs, bombs[i].type * BOMB_WIDTH,
bombs[i].frame * BOMB_HEIGHT,
STRIDE( SCREEN_MAIN,
STRIDE( SCREEN_MAIN,
BMPWIDTH_invadrox_bombs,
BMPHEIGHT_invadrox_bombs),
BMPHEIGHT_invadrox_bombs),
bombs[i].x, bombs[i].y,
BOMB_WIDTH, BOMB_HEIGHT);
/* Advance frame */
@ -1415,9 +1408,9 @@ static void move_bombs(void)
bombs[i].state = S_EXPLODE * 4;
bombs[i].target = TARGET_SHIP;
rb->lcd_bitmap_part(invadrox_ships, 0, 1 * SHIP_HEIGHT,
STRIDE( SCREEN_MAIN,
STRIDE( SCREEN_MAIN,
BMPWIDTH_invadrox_ships,
BMPHEIGHT_invadrox_ships),
BMPHEIGHT_invadrox_ships),
ship_x, SHIP_Y,
SHIP_WIDTH, SHIP_HEIGHT);
break;

View file

@ -347,27 +347,7 @@ CONFIG_KEYPAD == MROBE500_PAD
#define JEWELS_CANCEL BUTTON_POWER
#define HK_CANCEL "Power"
#elif CONFIG_KEYPAD == XDUOO_X3_PAD
#define JEWELS_UP BUTTON_HOME
#define JEWELS_DOWN BUTTON_OPTION
#define JEWELS_LEFT BUTTON_PREV
#define JEWELS_RIGHT BUTTON_NEXT
#define JEWELS_SELECT BUTTON_PLAY
#define JEWELS_CANCEL BUTTON_POWER
#define HK_SELECT "PLAY"
#define HK_CANCEL "POWER"
#elif CONFIG_KEYPAD == XDUOO_X3II_PAD
#define JEWELS_UP BUTTON_HOME
#define JEWELS_DOWN BUTTON_OPTION
#define JEWELS_LEFT BUTTON_PREV
#define JEWELS_RIGHT BUTTON_NEXT
#define JEWELS_SELECT BUTTON_PLAY
#define JEWELS_CANCEL BUTTON_POWER
#define HK_SELECT "PLAY"
#define HK_CANCEL "POWER"
#elif CONFIG_KEYPAD == XDUOO_X20_PAD
#elif CONFIG_KEYPAD == XDUOO_X3_PAD || CONFIG_KEYPAD == XDUOO_X3II_PAD || CONFIG_KEYPAD == XDUOO_X20_PAD
#define JEWELS_UP BUTTON_HOME
#define JEWELS_DOWN BUTTON_OPTION
#define JEWELS_LEFT BUTTON_PREV
@ -387,7 +367,7 @@ CONFIG_KEYPAD == MROBE500_PAD
#define HK_SELECT "PLAY"
#define HK_CANCEL "POWER"
#elif CONFIG_KEYPAD == IHIFI_770_PAD
#elif CONFIG_KEYPAD == IHIFI_770_PAD || CONFIG_KEYPAD == IHIFI_800_PAD
#define JEWELS_UP BUTTON_PREV
#define JEWELS_DOWN BUTTON_NEXT
#define JEWELS_LEFT BUTTON_HOME
@ -397,15 +377,16 @@ CONFIG_KEYPAD == MROBE500_PAD
#define HK_SELECT "PLAY"
#define HK_CANCEL "POWER"
#elif CONFIG_KEYPAD == IHIFI_800_PAD
#elif CONFIG_KEYPAD == EROSQ_PAD
#define JEWELS_UP BUTTON_PREV
#define JEWELS_DOWN BUTTON_NEXT
#define JEWELS_LEFT BUTTON_HOME
#define JEWELS_RIGHT BUTTON_VOL_DOWN
#define JEWELS_LEFT BUTTON_SCROLL_BACK
#define JEWELS_RIGHT BUTTON_SCROLL_FWD
#define JEWELS_SELECT BUTTON_PLAY
#define JEWELS_CANCEL BUTTON_POWER
#define JEWELS_CANCEL BUTTON_BACK
#define HK_SELECT "PLAY"
#define HK_CANCEL "POWER"
#define HK_CANCEL "BACK"
#else
#error No keymap defined!
@ -662,14 +643,14 @@ static void jewels_drawboard(struct game_context* bj) {
TILE_WIDTH, TILE_HEIGHT);
rb->lcd_bitmap_transparent_part(jewels,
0, TILE_HEIGHT*(bj->playboard[i+1][j].type),
STRIDE( SCREEN_MAIN,
BMPWIDTH_jewels, BMPHEIGHT_jewels),
STRIDE( SCREEN_MAIN,
BMPWIDTH_jewels, BMPHEIGHT_jewels),
j*TILE_WIDTH, i*TILE_HEIGHT+YOFS,
TILE_WIDTH, TILE_HEIGHT);
#else
rb->lcd_bitmap_part(jewels,
0, TILE_HEIGHT*(bj->playboard[i+1][j].type),
STRIDE( SCREEN_MAIN,
STRIDE( SCREEN_MAIN,
BMPWIDTH_jewels, BMPHEIGHT_jewels),
j*TILE_WIDTH, i*TILE_HEIGHT+YOFS,
TILE_WIDTH, TILE_HEIGHT);
@ -685,7 +666,7 @@ static void jewels_drawboard(struct game_context* bj) {
rb->lcd_hline(BJ_WIDTH*TILE_WIDTH, LCD_WIDTH-1, 18);
rb->lcd_hline(BJ_WIDTH*TILE_WIDTH, LCD_WIDTH-1, LCD_HEIGHT-10);
/* draw progress bar */
#ifdef HAVE_LCD_COLOR
rb->lcd_set_foreground(LCD_RGBPACK(104, 63, 63));
@ -708,7 +689,7 @@ static void jewels_drawboard(struct game_context* bj) {
(LCD_WIDTH-BJ_WIDTH*TILE_WIDTH)/2,
((LCD_HEIGHT-10)-18)*tempscore/size+1);
#endif
/* print text */
rb->lcd_getstringsize(title, &w, &h);
rb->lcd_putsxy(LCD_WIDTH-(LCD_WIDTH-BJ_WIDTH*TILE_WIDTH)/2-w/2, 1, title);
@ -730,7 +711,7 @@ static void jewels_drawboard(struct game_context* bj) {
rb->lcd_hline(0, LCD_WIDTH-1, 8*TILE_HEIGHT+YOFS);
rb->lcd_hline(0, LCD_WIDTH-1, LCD_HEIGHT-14);
rb->lcd_vline(LCD_WIDTH/2, LCD_HEIGHT-14, LCD_HEIGHT-1);
/* draw progress bar */
#ifdef HAVE_LCD_COLOR
rb->lcd_set_foreground(LCD_RGBPACK(104, 63, 63));
@ -751,10 +732,10 @@ static void jewels_drawboard(struct game_context* bj) {
LCD_WIDTH*tempscore/size+1,
(LCD_HEIGHT-14-(8*TILE_HEIGHT+YOFS))/2);
#endif
/* print text */
rb->lcd_putsxyf(1, LCD_HEIGHT-10, "%s %d", title, bj->level);
if (bj->type == GAME_TYPE_NORMAL) {
rb->snprintf(str, 6, "%d", (bj->level-1)*LEVEL_PTS+bj->score);
rb->lcd_getstringsize(str, &w, &h);
@ -796,7 +777,7 @@ static void jewels_drawboard(struct game_context* bj) {
/* print text */
rb->lcd_putsxyf(1, LCD_HEIGHT-(LCD_HEIGHT-(8*TILE_HEIGHT+YOFS))/2-3,"%s %d",
title, bj->level);
if (bj->type == GAME_TYPE_NORMAL) {
rb->snprintf(str, 6, "%d", (bj->level-1)*LEVEL_PTS+bj->score);
rb->lcd_getstringsize(str, &w, &h);
@ -881,8 +862,8 @@ static void jewels_putjewels(struct game_context* bj){
#ifdef HAVE_LCD_COLOR
rb->lcd_bitmap_transparent_part(jewels, 0,
TILE_HEIGHT*(bj->playboard[i][j].type),
STRIDE( SCREEN_MAIN,
BMPWIDTH_jewels,
STRIDE( SCREEN_MAIN,
BMPWIDTH_jewels,
BMPHEIGHT_jewels),
j*TILE_WIDTH,
(i-1)*TILE_HEIGHT+YOFS+
@ -891,8 +872,8 @@ static void jewels_putjewels(struct game_context* bj){
#else
rb->lcd_bitmap_part(jewels, 0,
TILE_HEIGHT*(bj->playboard[i][j].type),
STRIDE( SCREEN_MAIN,
BMPWIDTH_jewels,
STRIDE( SCREEN_MAIN,
BMPWIDTH_jewels,
BMPHEIGHT_jewels),
j*TILE_WIDTH,
(i-1)*TILE_HEIGHT+YOFS+
@ -1113,7 +1094,7 @@ static unsigned int jewels_swapjewels(struct game_context* bj,
rb->lcd_bitmap_transparent_part(jewels,
0, TILE_HEIGHT*(bj->playboard
[y+1+vertmod][x+horzmod].type),
STRIDE( SCREEN_MAIN,
STRIDE( SCREEN_MAIN,
BMPWIDTH_jewels, BMPHEIGHT_jewels),
(x+horzmod)*TILE_WIDTH-horzmod*
((((movelen<<10)*k)/8)>>10),
@ -1122,7 +1103,7 @@ static unsigned int jewels_swapjewels(struct game_context* bj,
TILE_WIDTH, TILE_HEIGHT);
rb->lcd_bitmap_transparent_part(jewels,
0, TILE_HEIGHT*(bj->playboard[y+1][x].type),
STRIDE( SCREEN_MAIN,
STRIDE( SCREEN_MAIN,
BMPWIDTH_jewels, BMPHEIGHT_jewels),
x*TILE_WIDTH+horzmod*
((((movelen<<10)*k)/8)>>10),
@ -1133,7 +1114,7 @@ static unsigned int jewels_swapjewels(struct game_context* bj,
rb->lcd_bitmap_part(jewels,
0, TILE_HEIGHT*(bj->playboard
[y+1+vertmod][x+horzmod].type),
STRIDE( SCREEN_MAIN,
STRIDE( SCREEN_MAIN,
BMPWIDTH_jewels, BMPHEIGHT_jewels),
(x+horzmod)*TILE_WIDTH-horzmod*
((((movelen<<10)*k)/8)>>10),
@ -1143,7 +1124,7 @@ static unsigned int jewels_swapjewels(struct game_context* bj,
rb->lcd_set_drawmode(DRMODE_FG);
rb->lcd_bitmap_part(jewels,
0, TILE_HEIGHT*(bj->playboard[y+1][x].type),
STRIDE( SCREEN_MAIN,
STRIDE( SCREEN_MAIN,
BMPWIDTH_jewels, BMPHEIGHT_jewels),
x*TILE_WIDTH+horzmod*
((((movelen<<10)*k)/8)>>10),
@ -1430,7 +1411,7 @@ static bool jewels_help(void)
{
static char *help_text[] = {
"Jewels", "", "Aim", "",
"Swap", "pairs", "of", "jewels", "to", "form", "connected",
"Swap", "pairs", "of", "jewels", "to", "form", "connected",
"segments", "of", "three", "or", "more", "of", "the", "same",
"type.", "",
"The", "goal", "of", "the", "game", "is", "to", "score", "as", "many",

View file

@ -215,23 +215,7 @@
#define BTN_FIRE BUTTON_MENU
#define BTN_PAUSE BUTTON_POWER
#elif (CONFIG_KEYPAD == XDUOO_X3_PAD)
#define BTN_UP BUTTON_VOL_UP
#define BTN_DOWN BUTTON_VOL_DOWN
#define BTN_LEFT BUTTON_PREV
#define BTN_RIGHT BUTTON_NEXT
#define BTN_FIRE BUTTON_PLAY
#define BTN_PAUSE BUTTON_POWER
#elif (CONFIG_KEYPAD == XDUOO_X3II_PAD)
#define BTN_UP BUTTON_VOL_UP
#define BTN_DOWN BUTTON_VOL_DOWN
#define BTN_LEFT BUTTON_PREV
#define BTN_RIGHT BUTTON_NEXT
#define BTN_FIRE BUTTON_PLAY
#define BTN_PAUSE BUTTON_POWER
#elif (CONFIG_KEYPAD == XDUOO_X20_PAD)
#elif (CONFIG_KEYPAD == XDUOO_X3_PAD) || (CONFIG_KEYPAD == XDUOO_X3II_PAD) || (CONFIG_KEYPAD == XDUOO_X20_PAD)
#define BTN_UP BUTTON_VOL_UP
#define BTN_DOWN BUTTON_VOL_DOWN
#define BTN_LEFT BUTTON_PREV
@ -247,15 +231,15 @@
#define BTN_FIRE BUTTON_PLAY
#define BTN_PAUSE BUTTON_POWER
#elif (CONFIG_KEYPAD == IHIFI_770_PAD)
#elif (CONFIG_KEYPAD == EROSQ_PAD)
#define BTN_UP BUTTON_PREV
#define BTN_DOWN BUTTON_NEXT
#define BTN_LEFT BUTTON_HOME
#define BTN_RIGHT BUTTON_VOL_DOWN
#define BTN_LEFT BUTTON_SCROLL_BACK
#define BTN_RIGHT BUTTON_SCROLL_FWD
#define BTN_FIRE BUTTON_PLAY
#define BTN_PAUSE BUTTON_POWER
#elif (CONFIG_KEYPAD == IHIFI_800_PAD)
#elif (CONFIG_KEYPAD == IHIFI_770_PAD) || (CONFIG_KEYPAD == IHIFI_800_PAD)
#define BTN_UP BUTTON_PREV
#define BTN_DOWN BUTTON_NEXT
#define BTN_LEFT BUTTON_HOME

View file

@ -68,7 +68,7 @@ const struct button_mapping pla_remote_ctx[] =
#endif /* HAVE_REMOTE_LCD */
/* these were taken from the bubbles plugin, so may need tweaking */
const struct button_mapping pla_main_ctx[] =
const struct button_mapping pla_main_ctx[] =
{
/* Touchscreens */
#ifdef HAVE_TOUCHSCREEN
@ -242,6 +242,15 @@ const struct button_mapping pla_main_ctx[] =
{ PLA_DOWN_REPEAT, BUTTON_OPTION|BUTTON_REPEAT, BUTTON_NONE },
{ PLA_LEFT_REPEAT, BUTTON_PREV|BUTTON_REPEAT, BUTTON_NONE },
{ PLA_RIGHT_REPEAT, BUTTON_NEXT|BUTTON_REPEAT, BUTTON_NONE },
#elif (CONFIG_KEYPAD == EROSQ_PAD)
{ PLA_UP, BUTTON_NEXT, BUTTON_NONE },
{ PLA_DOWN, BUTTON_PREV, BUTTON_NONE },
{ PLA_LEFT, BUTTON_SCROLL_BACK, BUTTON_NONE },
{ PLA_RIGHT, BUTTON_SCROLL_FWD, BUTTON_NONE },
{ PLA_UP_REPEAT, BUTTON_NEXT|BUTTON_REPEAT, BUTTON_NONE },
{ PLA_DOWN_REPEAT, BUTTON_PREV|BUTTON_REPEAT, BUTTON_NONE },
// { PLA_LEFT_REPEAT, BUTTON_SCROLL_BACK|BUTTON_REPEAT, BUTTON_NONE },
// { PLA_RIGHT_REPEAT, BUTTON_SCROLL_FWD|BUTTON_REPEAT, BUTTON_NONE },
#elif (CONFIG_KEYPAD == IHIFI_770_PAD)
{ PLA_UP, BUTTON_PREV, BUTTON_NONE },
{ PLA_DOWN, BUTTON_NEXT, BUTTON_NONE },
@ -407,19 +416,19 @@ const struct button_mapping pla_main_ctx[] =
{PLA_SELECT, BUTTON_OK, BUTTON_NONE},
{PLA_SELECT_REL, BUTTON_OK|BUTTON_REL, BUTTON_OK },
{PLA_SELECT_REPEAT, BUTTON_OK|BUTTON_REPEAT, BUTTON_NONE},
#elif (CONFIG_KEYPAD == MPIO_HD200_PAD)
#elif (CONFIG_KEYPAD == MPIO_HD200_PAD)
{PLA_CANCEL, BUTTON_REC, BUTTON_NONE},
{PLA_EXIT, (BUTTON_REC|BUTTON_PLAY), BUTTON_NONE},
{PLA_SELECT, BUTTON_FUNC, BUTTON_NONE},
{PLA_SELECT_REL, BUTTON_FUNC|BUTTON_REL, BUTTON_FUNC},
{PLA_SELECT_REPEAT, BUTTON_FUNC|BUTTON_REPEAT, BUTTON_NONE},
#elif (CONFIG_KEYPAD == MPIO_HD300_PAD)
#elif (CONFIG_KEYPAD == MPIO_HD300_PAD)
{PLA_CANCEL, BUTTON_MENU, BUTTON_NONE},
{PLA_EXIT, BUTTON_MENU|BUTTON_REPEAT, BUTTON_NONE},
{PLA_SELECT, BUTTON_ENTER, BUTTON_NONE},
{PLA_SELECT_REL, BUTTON_ENTER|BUTTON_REL, BUTTON_ENTER},
{PLA_SELECT_REPEAT, BUTTON_ENTER|BUTTON_REPEAT, BUTTON_NONE},
#elif (CONFIG_KEYPAD == RK27XX_GENERIC_PAD)
#elif (CONFIG_KEYPAD == RK27XX_GENERIC_PAD)
{PLA_CANCEL, BUTTON_M, BUTTON_NONE},
{PLA_EXIT, BUTTON_M|BUTTON_REPEAT, BUTTON_NONE},
{PLA_SELECT, BUTTON_PLAY, BUTTON_NONE},
@ -431,7 +440,7 @@ const struct button_mapping pla_main_ctx[] =
{PLA_SELECT, BUTTON_SELECT, BUTTON_NONE},
{PLA_SELECT_REL, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT},
{PLA_SELECT_REPEAT, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_NONE},
#elif (CONFIG_KEYPAD == AGPTEK_ROCKER_PAD)
#elif (CONFIG_KEYPAD == AGPTEK_ROCKER_PAD)
{PLA_CANCEL, BUTTON_VOLUP, BUTTON_NONE},
{PLA_EXIT, BUTTON_POWER, BUTTON_NONE},
{PLA_SELECT, BUTTON_SELECT, BUTTON_NONE},
@ -479,6 +488,12 @@ const struct button_mapping pla_main_ctx[] =
{PLA_SELECT, BUTTON_PLAY, BUTTON_NONE},
{PLA_SELECT_REL, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY},
{PLA_SELECT_REPEAT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_NONE},
#elif (CONFIG_KEYPAD == EROSQ_PAD)
{PLA_CANCEL, BUTTON_BACK|BUTTON_REL, BUTTON_BACK},
{PLA_EXIT, BUTTON_POWER, BUTTON_NONE},
{PLA_SELECT, BUTTON_PLAY, BUTTON_NONE},
{PLA_SELECT_REL, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY},
{PLA_SELECT_REPEAT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_NONE},
#elif (CONFIG_KEYPAD == IHIFI_770_PAD)
{PLA_CANCEL, BUTTON_POWER|BUTTON_REL, BUTTON_POWER},
{PLA_EXIT, BUTTON_POWER|BUTTON_REPEAT, BUTTON_NONE},
@ -501,7 +516,7 @@ const struct button_mapping pla_main_ctx[] =
static struct button_mapping **plugin_context_order;
static int plugin_context_count = 0;
static int last_context = 0; /* index into plugin_context_order
static int last_context = 0; /* index into plugin_context_order
of the last context returned */
static const struct button_mapping* get_context_map(int context)

View file

@ -293,23 +293,7 @@
#define MIDI_VOL_DOWN BUTTON_VOLDOWN
#define MIDI_PLAYPAUSE BUTTON_SELECT
#elif CONFIG_KEYPAD == XDUOO_X3_PAD
#define MIDI_QUIT BUTTON_POWER
#define MIDI_FFWD BUTTON_NEXT
#define MIDI_REWIND BUTTON_PREV
#define MIDI_VOL_UP BUTTON_VOL_UP
#define MIDI_VOL_DOWN BUTTON_VOL_DOWN
#define MIDI_PLAYPAUSE BUTTON_PLAY
#elif CONFIG_KEYPAD == XDUOO_X3II_PAD
#define MIDI_QUIT BUTTON_POWER
#define MIDI_FFWD BUTTON_NEXT
#define MIDI_REWIND BUTTON_PREV
#define MIDI_VOL_UP BUTTON_VOL_UP
#define MIDI_VOL_DOWN BUTTON_VOL_DOWN
#define MIDI_PLAYPAUSE BUTTON_PLAY
#elif CONFIG_KEYPAD == XDUOO_X20_PAD
#elif CONFIG_KEYPAD == XDUOO_X3_PAD || CONFIG_KEYPAD == XDUOO_X3II_PAD || CONFIG_KEYPAD == XDUOO_X20_PAD
#define MIDI_QUIT BUTTON_POWER
#define MIDI_FFWD BUTTON_NEXT
#define MIDI_REWIND BUTTON_PREV
@ -325,15 +309,7 @@
#define MIDI_VOL_DOWN BUTTON_VOL_DOWN
#define MIDI_PLAYPAUSE BUTTON_PLAY
#elif CONFIG_KEYPAD == IHIFI_770_PAD
#define MIDI_QUIT BUTTON_POWER
#define MIDI_FFWD BUTTON_VOL_DOWN
#define MIDI_REWIND BUTTON_HOME
#define MIDI_VOL_UP BUTTON_PREV
#define MIDI_VOL_DOWN BUTTON_NEXT
#define MIDI_PLAYPAUSE BUTTON_PLAY
#elif CONFIG_KEYPAD == IHIFI_800_PAD
#elif CONFIG_KEYPAD == IHIFI_770_PAD || CONFIG_KEYPAD == IHIFI_800_PAD
#define MIDI_QUIT BUTTON_POWER
#define MIDI_FFWD BUTTON_VOL_DOWN
#define MIDI_REWIND BUTTON_HOME
@ -341,6 +317,14 @@
#define MIDI_VOL_DOWN BUTTON_NEXT
#define MIDI_PLAYPAUSE BUTTON_PLAY
#elif CONFIG_KEYPAD == EROSQ_PAD
#define MIDI_QUIT BUTTON_POWER
#define MIDI_FFWD BUTTON_NEXT
#define MIDI_REWIND BUTTON_PREV
#define MIDI_VOL_UP BUTTON_VOL_UP
#define MIDI_VOL_DOWN BUTTON_VOL_DOWN
#define MIDI_PLAYPAUSE BUTTON_PLAY
#else
#error No keymap defined!
#endif
@ -716,4 +700,3 @@ enum plugin_status plugin_start(const void* parameter)
return PLUGIN_ERROR;
return PLUGIN_OK;
}

View file

@ -382,20 +382,7 @@ CONFIG_KEYPAD == MROBE500_PAD
# define MINESWP_DISCOVER2 BUTTON_VOL_UP
# define MINESWP_INFO (BUTTON_PLAY | BUTTON_OPTION)
#elif (CONFIG_KEYPAD == XDUOO_X3II_PAD)
# define MINESWP_LEFT BUTTON_PREV
# define MINESWP_RIGHT BUTTON_NEXT
# define MINESWP_UP BUTTON_HOME
# define MINESWP_DOWN BUTTON_OPTION
# define MINESWP_QUIT BUTTON_POWER
# define MINESWP_TOGGLE_PRE BUTTON_PLAY
# define MINESWP_TOGGLE (BUTTON_PLAY | BUTTON_REL)
# define MINESWP_TOGGLE2 BUTTON_VOL_DOWN
# define MINESWP_DISCOVER (BUTTON_PLAY | BUTTON_REPEAT)
# define MINESWP_DISCOVER2 BUTTON_VOL_UP
# define MINESWP_INFO (BUTTON_PLAY | BUTTON_OPTION)
#elif (CONFIG_KEYPAD == XDUOO_X20_PAD)
#elif (CONFIG_KEYPAD == XDUOO_X3II_PAD) || (CONFIG_KEYPAD == XDUOO_X20_PAD)
# define MINESWP_LEFT BUTTON_PREV
# define MINESWP_RIGHT BUTTON_NEXT
# define MINESWP_UP BUTTON_HOME
@ -421,7 +408,7 @@ CONFIG_KEYPAD == MROBE500_PAD
# define MINESWP_DISCOVER2 BUTTON_VOL_UP
# define MINESWP_INFO (BUTTON_PLAY | BUTTON_OPTION)
#elif (CONFIG_KEYPAD == IHIFI_770_PAD)
#elif (CONFIG_KEYPAD == IHIFI_770_PAD) || (CONFIG_KEYPAD == IHIFI_800_PAD)
# define MINESWP_LEFT BUTTON_HOME
# define MINESWP_RIGHT BUTTON_VOL_DOWN
# define MINESWP_UP BUTTON_PREV
@ -434,18 +421,16 @@ CONFIG_KEYPAD == MROBE500_PAD
# define MINESWP_DISCOVER2 (BUTTON_POWER | BUTTON_VOL_DOWN)
# define MINESWP_INFO (BUTTON_POWER | BUTTON_HOME)
#elif (CONFIG_KEYPAD == IHIFI_800_PAD)
# define MINESWP_LEFT BUTTON_HOME
# define MINESWP_RIGHT BUTTON_VOL_DOWN
#elif (CONFIG_KEYPAD == EROSQ_PAD)
# define MINESWP_LEFT BUTTON_SCROLL_BACK
# define MINESWP_RIGHT BUTTON_SCROLL_FWD
# define MINESWP_UP BUTTON_PREV
# define MINESWP_DOWN BUTTON_NEXT
# define MINESWP_QUIT BUTTON_POWER
# define MINESWP_TOGGLE_PRE BUTTON_PLAY
# define MINESWP_TOGGLE (BUTTON_POWER | BUTTON_PREV)
# define MINESWP_TOGGLE2 (BUTTON_POWER | BUTTON_NEXT)
# define MINESWP_DISCOVER (BUTTON_POWER | BUTTON_VOL_UP)
# define MINESWP_DISCOVER2 (BUTTON_POWER | BUTTON_VOL_DOWN)
# define MINESWP_INFO (BUTTON_POWER | BUTTON_HOME)
# define MINESWP_TOGGLE (BUTTON_PLAY | BUTTON_REL)
# define MINESWP_DISCOVER (BUTTON_PLAY | BUTTON_REPEAT)
# define MINESWP_INFO BUTTON_VOL_UP
#else
#error No keymap defined!

View file

@ -152,7 +152,7 @@ static const uint8_t ht_count[2][2][16] =
{ {15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 }, /* table1 */
{ 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8 } } }; /* hleng1 */
static const uint8_t t1HB[4] = {1,1,1,0};
static const uint8_t t1HB[4] = {1,1,1,0};
static const uint8_t t2HB[9] = {1,2,1,3,1,1,3,2,0};
static const uint8_t t3HB[9] = {3,2,1,1,1,1,3,2,0};
static const uint8_t t5HB[16] = {1,2,6,5,3,1,4,4,7,5,7,1,6,1,1,0};
@ -802,7 +802,7 @@ static const int16_t win[18][4] = {
{ 529, -831,-3747,-2387 },
{ 362, -471,-3579,-2747 },
{ 134, -146,-3352,-3072 } };
static char* mp3_enc_err[] = {
/* 0 */ "",
/* 1 */ "Cannot open file.",
@ -880,21 +880,21 @@ static int wave_open(void)
if((wavfile = rb->open(wav_filename, O_RDONLY)) < 0)
return -1;
if(!checkString(wavfile,"RIFF")) return -2;
Read32BitsLowHigh(wavfile); /* complete wave chunk size */
if(!checkString(wavfile,"WAVE")) return -3;
if(!checkString(wavfile,"fmt ")) return -4;
header_size = Read32BitsLowHigh(wavfile); /* chunk size */
wFormatTag = Read16BitsLowHigh(wavfile);
cfg.channels = Read16BitsLowHigh(wavfile);
cfg.samplerate = Read32BitsLowHigh(wavfile);
/*dAvgBytesPerSec*/ Read32BitsLowHigh(wavfile);
/*wBlockAlign */ Read16BitsLowHigh(wavfile);
bits_per_samp = Read16BitsLowHigh(wavfile);
if(wFormatTag != 0x0001) return -5; /* linear PCM required */
if(bits_per_samp != 16) return -6; /* 16 bps required */
if(cfg.channels > 2) return -7; /* <=2 channels required */
@ -904,11 +904,11 @@ static int wave_open(void)
if((cfg.samplerate != 16000) && (cfg.samplerate != 22050) &&
(cfg.samplerate != 24000) && (cfg.samplerate != 32000) &&
(cfg.samplerate != 44100) && (cfg.samplerate != 48000)) return -9;
header_size = 0x28;
wav_size = rb->filesize(wavfile);
rb->lseek(wavfile, header_size, SEEK_SET);
return 0;
}
@ -946,7 +946,7 @@ static void encodeSideInfo( side_info_t si[2][2] )
{
int gr, ch, header;
uint32_t cc=0, sz=0;
/*
* MPEG header layout:
* AAAAAAAA AAABBCCD EEEEFFGH IIJJKLMM
@ -1053,7 +1053,7 @@ static void Huffmancodebits( short *ix, char *xr_sign, side_info_t *gi )
if(bigvals > region2)
bits += HuffmanCode(ix, xr_sign, region2, bigvals, gi->table_select[2]);
if(count1 > bigvals)
bits += HuffmanCod1(ix, xr_sign, bigvals, count1, gi->table_select[3]);
@ -1251,7 +1251,7 @@ static int choose_table( short *ix, uint32_t begin, uint32_t end, int *bits )
{
uint32_t i;
int max, table0, table1;
for(i=begin,max=0; i<end; i++)
if(ix[i] > max)
max = ix[i];
@ -1408,7 +1408,7 @@ static int calc_runlen( short *ix, side_info_t *si )
int w = ix[i-2];
int x = ix[i-3];
int y = ix[i-4];
if((v | w | x | y) <= 1)
{
p = (y<<3) + (x<<2) + (w<<1) + (v);
@ -1473,7 +1473,7 @@ static int quantize_int(int *xr, short *ix, side_info_t *si)
static void subdivide(side_info_t *si)
{
int scfb, count0, count1;
if( !si->address3 )
{ /* no bigvalue region */
si->region_0_1 = 0;
@ -1535,7 +1535,7 @@ static int quantize_and_count_bits(int *xr, short *ix, side_info_t *si)
/************************************************************************/
/* The code selects the best quantStep for a particular set of scalefacs*/
/************************************************************************/
/************************************************************************/
static int inner_loop(int *xr, int max_bits, side_info_t *si)
{
int bits;
@ -1877,7 +1877,7 @@ void window_subband2(short *x1, int a[SBLIMIT])
a[ 7] -= a[ 6];
a[22] -= a[ 7];
a[23] -= a[22];
xr = a[ 6]; a[ 6] = a[31] - xr; a[31] = a[31] + xr;
xr = a[ 7]; a[ 7] = a[30] - xr; a[30] = a[30] + xr;
xr = a[22]; a[22] = a[15] - xr; a[15] = a[15] + xr;
@ -1897,23 +1897,23 @@ void window_subband2(short *x1, int a[SBLIMIT])
xr = a[ 1] - a[13]; a[ 1] += a[13]; a[13] = shft9(xr) * wp[ -4*27+25];
xr = a[16] - a[28]; a[16] += a[28]; a[28] = shft9(xr) * wp[ -4*27+25];
xr =-a[17] + a[29]; a[17] += a[29]; a[29] = shft9(xr) * wp[ -4*27+25];
xr = SQRT * shft9(a[ 2] - a[10]); a[ 2] += a[10]; a[10] = xr;
xr = SQRT * shft9(a[ 3] - a[11]); a[ 3] += a[11]; a[11] = xr;
xr = SQRT * shft9(a[26] - a[18]); a[18] += a[26]; a[26] = xr - a[18];
xr = SQRT * shft9(a[27] - a[19]); a[19] += a[27]; a[27] = xr - a[19];
xr = a[ 2]; a[19] -= a[ 3]; a[ 3] -= xr; a[ 2] = a[31] - xr; a[31] += xr;
xr = a[ 3]; a[11] -= a[19]; a[18] -= xr; a[ 3] = a[30] - xr; a[30] += xr;
xr = a[18]; a[27] -= a[11]; a[19] -= xr; a[18] = a[15] - xr; a[15] += xr;
xr = a[19]; a[10] -= xr; a[19] = a[14] - xr; a[14] += xr;
xr = a[10]; a[11] -= xr; a[10] = a[23] - xr; a[23] += xr;
xr = a[11]; a[26] -= xr; a[11] = a[22] - xr; a[22] += xr;
xr = a[26]; a[27] -= xr; a[26] = a[ 7] - xr; a[ 7] += xr;
xr = a[27]; a[27] = a[6] - xr; a[6] += xr;
xr = SQRT * shft9(a[ 0] - a[ 4]); a[ 0] += a[ 4]; a[ 4] = xr;
xr = SQRT * shft9(a[ 1] - a[ 5]); a[ 1] += a[ 5]; a[ 5] = xr;
xr = SQRT * shft9(a[16] - a[20]); a[16] += a[20]; a[20] = xr;
@ -1922,15 +1922,15 @@ void window_subband2(short *x1, int a[SBLIMIT])
xr =-SQRT * shft9(a[ 9] - a[13]); a[ 9] += a[13]; a[13] = xr - a[ 9];
xr =-SQRT * shft9(a[25] - a[29]); a[25] += a[29]; a[29] = xr - a[25];
xr =-SQRT * shft9(a[24] + a[28]); a[24] -= a[28]; a[28] = xr - a[24];
xr = a[24] - a[16]; a[24] = xr;
xr = a[20] - xr; a[20] = xr;
xr = a[28] - xr; a[28] = xr;
xr = a[25] - a[17]; a[25] = xr;
xr = a[21] - xr; a[21] = xr;
xr = a[29] - xr; a[29] = xr;
xr = a[17] - a[1]; a[17] = xr;
xr = a[ 9] - xr; a[ 9] = xr;
xr = a[25] - xr; a[25] = xr;
@ -1938,7 +1938,7 @@ void window_subband2(short *x1, int a[SBLIMIT])
xr = a[21] - xr; a[21] = xr;
xr = a[13] - xr; a[13] = xr;
xr = a[29] - xr; a[29] = xr;
xr = a[ 1] - a[0]; a[ 1] = xr;
xr = a[16] - xr; a[16] = xr;
xr = a[17] - xr; a[17] = xr;
@ -1954,7 +1954,7 @@ void window_subband2(short *x1, int a[SBLIMIT])
xr = a[13] - xr; a[13] = xr;
xr = a[28] - xr; a[28] = xr;
xr = a[29] - xr; a[29] = xr;
xr = a[ 0]; a[ 0] += a[31]; a[31] -= xr;
xr = a[ 1]; a[ 1] += a[30]; a[30] -= xr;
xr = a[16]; a[16] += a[15]; a[15] -= xr;
@ -1994,7 +1994,7 @@ void mdct_long(int *out, int *in)
ct = (tc1 - tc3 - tc4) * cx[6];
out[5] = ct + st;
out[6] = ct - st;
tc2 = (in[16] - in[10]) * cx[6];
ts6 = ts6 * cx[7] + in[4] * cx[8];
@ -2002,12 +2002,12 @@ void mdct_long(int *out, int *in)
st = -ts5 * cx[4] + ts6 - ts7 * cx[5] + ts8 * cx[3];
out[1] = ct + st;
out[2] = ct - st;
ct = tc1 * cx[1] - tc2 - tc3 * cx[2] + tc4 * cx[0];
st = -ts5 * cx[5] + ts6 - ts7 * cx[3] + ts8 * cx[4];
out[ 9] = ct + st;
out[10] = ct - st;
ct = tc1 * cx[2] - tc2 + tc3 * cx[0] - tc4 * cx[1];
st = ts5 * cx[3] - ts6 + ts7 * cx[4] - ts8 * cx[5];
out[13] = ct + st;
@ -2089,7 +2089,7 @@ static void init_mp3_encoder_engine(bool stereo, int bitrate, uint16_t sample_ra
cfg.mpg.smpl_id = find_samplerate_index(cfg.samplerate, &cfg.mpg.type);
cfg.mpg.bitr_id = find_bitrate_index(cfg.mpg.type, cfg.mpg.bitrate);
cfg.mpg.num_bands = num_bands[stereo ? cfg.mpg.type : 2][cfg.mpg.bitr_id];
if(0 == cfg.mpg.type)
{ /* use MPEG2 format */
cfg.smpl_per_frm = MAX_SAMP_PER_FRAME/2;
@ -2172,13 +2172,13 @@ static void compress(void)
{
if((frames & 7) == 0)
{ rb->lcd_clear_display();
rb->lcd_putsxyf(4, 20, "Frame %d / %d", frames,
rb->lcd_putsxyf(4, 20, "Frame %d / %d", frames,
wav_size/cfg.smpl_per_frm/cfg.channels/2);
rb->lcd_update();
}
/* encode one mp3 frame in this loop */
memset(CodedData.bbuf, 0, sizeof(CodedData.bbuf));
if((cfg.slot_lag += cfg.frac_per_frame) >= 64)
{ /* Padding for this frame */
cfg.slot_lag -= 64;
@ -2556,19 +2556,7 @@ CONFIG_KEYPAD == MROBE500_PAD
#define MP3ENC_DONE BUTTON_POWER
#define MP3ENC_SELECT BUTTON_SELECT
#elif CONFIG_KEYPAD == XDUOO_X3_PAD
#define MP3ENC_PREV BUTTON_HOME
#define MP3ENC_NEXT BUTTON_OPTION
#define MP3ENC_DONE BUTTON_POWER
#define MP3ENC_SELECT BUTTON_PLAY
#elif CONFIG_KEYPAD == XDUOO_X3II_PAD
#define MP3ENC_PREV BUTTON_HOME
#define MP3ENC_NEXT BUTTON_OPTION
#define MP3ENC_DONE BUTTON_POWER
#define MP3ENC_SELECT BUTTON_PLAY
#elif CONFIG_KEYPAD == XDUOO_X20_PAD
#elif CONFIG_KEYPAD == XDUOO_X3_PAD || CONFIG_KEYPAD == XDUOO_X3II_PAD || CONFIG_KEYPAD == XDUOO_X20_PAD
#define MP3ENC_PREV BUTTON_HOME
#define MP3ENC_NEXT BUTTON_OPTION
#define MP3ENC_DONE BUTTON_POWER
@ -2580,13 +2568,13 @@ CONFIG_KEYPAD == MROBE500_PAD
#define MP3ENC_DONE BUTTON_POWER
#define MP3ENC_SELECT BUTTON_PLAY
#elif CONFIG_KEYPAD == IHIFI_770_PAD
#elif CONFIG_KEYPAD == IHIFI_770_PAD || CONFIG_KEYPAD == IHIFI_800_PAD
#define MP3ENC_PREV BUTTON_PREV
#define MP3ENC_NEXT BUTTON_NEXT
#define MP3ENC_DONE BUTTON_POWER
#define MP3ENC_SELECT BUTTON_PLAY
#elif CONFIG_KEYPAD == IHIFI_800_PAD
#elif CONFIG_KEYPAD == EROSQ_PAD
#define MP3ENC_PREV BUTTON_PREV
#define MP3ENC_NEXT BUTTON_NEXT
#define MP3ENC_DONE BUTTON_POWER

View file

@ -316,17 +316,7 @@ struct mpeg_settings settings;
#define MPEG_START_TIME_RIGHT2 BUTTON_VOL_DOWN
#define MPEG_START_TIME_EXIT BUTTON_POWER
#elif CONFIG_KEYPAD == XDUOO_X3II_PAD
#define MPEG_START_TIME_SELECT BUTTON_PLAY
#define MPEG_START_TIME_LEFT BUTTON_PREV
#define MPEG_START_TIME_RIGHT BUTTON_NEXT
#define MPEG_START_TIME_UP BUTTON_HOME
#define MPEG_START_TIME_DOWN BUTTON_OPTION
#define MPEG_START_TIME_LEFT2 BUTTON_VOL_UP
#define MPEG_START_TIME_RIGHT2 BUTTON_VOL_DOWN
#define MPEG_START_TIME_EXIT BUTTON_POWER
#elif CONFIG_KEYPAD == XDUOO_X20_PAD
#elif CONFIG_KEYPAD == XDUOO_X3II_PAD || CONFIG_KEYPAD == XDUOO_X20_PAD
#define MPEG_START_TIME_SELECT BUTTON_PLAY
#define MPEG_START_TIME_LEFT BUTTON_PREV
#define MPEG_START_TIME_RIGHT BUTTON_NEXT
@ -346,7 +336,7 @@ struct mpeg_settings settings;
#define MPEG_START_TIME_RIGHT2 BUTTON_VOL_DOWN
#define MPEG_START_TIME_EXIT BUTTON_POWER
#elif CONFIG_KEYPAD == IHIFI_770_PAD
#elif CONFIG_KEYPAD == IHIFI_770_PAD || CONFIG_KEYPAD == IHIFI_800_PAD
#define MPEG_START_TIME_SELECT BUTTON_PLAY
#define MPEG_START_TIME_LEFT BUTTON_HOME
#define MPEG_START_TIME_RIGHT BUTTON_VOL_DOWN
@ -356,14 +346,12 @@ struct mpeg_settings settings;
#define MPEG_START_TIME_RIGHT2 (BUTTON_POWER + BUTTON_VOL_DOWN)
#define MPEG_START_TIME_EXIT BUTTON_POWER
#elif CONFIG_KEYPAD == IHIFI_800_PAD
#elif CONFIG_KEYPAD == EROSQ_PAD
#define MPEG_START_TIME_SELECT BUTTON_PLAY
#define MPEG_START_TIME_LEFT BUTTON_HOME
#define MPEG_START_TIME_RIGHT BUTTON_VOL_DOWN
#define MPEG_START_TIME_LEFT BUTTON_SCROLL_BACK
#define MPEG_START_TIME_RIGHT BUTTON_SCROLL_FWD
#define MPEG_START_TIME_UP BUTTON_PREV
#define MPEG_START_TIME_DOWN BUTTON_NEXT
#define MPEG_START_TIME_LEFT2 (BUTTON_POWER + BUTTON_HOME)
#define MPEG_START_TIME_RIGHT2 (BUTTON_POWER + BUTTON_VOL_DOWN)
#define MPEG_START_TIME_EXIT BUTTON_POWER
#else

View file

@ -23,9 +23,9 @@
/****************************************************************************
* NOTES:
*
*
* mpegplayer is structured as follows:
*
*
* +-->Video Thread-->Video Output-->LCD
* |
* UI-->Stream Manager-->+-->Audio Thread-->PCM buffer--Audio Device
@ -36,53 +36,53 @@
* | Disk I/O
* Stream services
* (timing, etc.)
*
*
* Thread list:
* 1) The main thread - Handles user input, settings, basic playback control
* and USB connect.
*
*
* 2) Stream Manager thread - Handles playback state, events from streams
* such as when a stream is finished, stream commands, PCM state. The
* layer in which this thread run also handles arbitration of data
* requests between the streams and the disk buffer. The actual specific
* transport layer code may get moved out to support multiple container
* formats.
*
*
* 3) Buffer thread - Buffers data in the background, generates notifications
* to streams when their data has been buffered, and watches streams'
* progress to keep data available during playback. Handles synchronous
* random access requests when the file cache is missed.
*
*
* 4) Video thread (running on the COP for PortalPlayer targets) - Decodes
* the video stream and renders video frames to the LCD. Handles
* miscellaneous video tasks like frame and thumbnail printing.
*
*
* 5) Audio thread (running on the main CPU to maintain consistency with the
* audio FIQ hander on PP) - Decodes audio frames and places them into
* the PCM buffer for rendering by the audio device.
*
*
* Streams are neither aware of one another nor care about one another. All
* streams shall have their own thread (unless it is _really_ efficient to
* have a single thread handle a couple minor streams). All coordination of
* the streams is done through the stream manager. The clocking is controlled
* by and exposed by the stream manager to other streams and implemented at
* the PCM level.
*
*
* Notes about MPEG files:
*
*
* MPEG System Clock is 27MHz - i.e. 27000000 ticks/second.
*
*
* FPS is represented in terms of a frame period - this is always an
* integer number of 27MHz ticks.
*
*
* e.g. 29.97fps (30000/1001) NTSC video has an exact frame period of
* 900900 27MHz ticks.
*
*
* In libmpeg2, info->sequence->frame_period contains the frame_period.
*
*
* Working with Rockbox's 100Hz tick, the common frame rates would need
* to be as follows (1):
*
*
* FPS | 27Mhz | 100Hz | 44.1KHz | 48KHz
* --------|-----------------------------------------------------------
* 10* | 2700000 | 10 | 4410 | 4800
@ -93,9 +93,9 @@
* 25 | 1080000 | 4 | 1764 | 1920
* 29.9700 | 900900 | 3.336667 | 1471,47 | 1601.6
* 30 | 900000 | 3.333333 | 1470 | 1600
*
*
* *Unofficial framerates
*
*
* (1) But we don't really care since the audio clock is used anyway and has
* very fine resolution ;-)
*****************************************************************************/
@ -450,16 +450,7 @@ CONFIG_KEYPAD == SANSA_M200_PAD
#define MPEG_RW BUTTON_PREV
#define MPEG_FF BUTTON_NEXT
#elif CONFIG_KEYPAD == XDUOO_X3II_PAD
#define MPEG_MENU BUTTON_PLAY
#define MPEG_STOP BUTTON_POWER
#define MPEG_PAUSE BUTTON_HOME
#define MPEG_VOLDOWN BUTTON_VOL_DOWN
#define MPEG_VOLUP BUTTON_VOL_UP
#define MPEG_RW BUTTON_PREV
#define MPEG_FF BUTTON_NEXT
#elif CONFIG_KEYPAD == XDUOO_X20_PAD
#elif CONFIG_KEYPAD == XDUOO_X3II_PAD || CONFIG_KEYPAD == XDUOO_X20_PAD
#define MPEG_MENU BUTTON_PLAY
#define MPEG_STOP BUTTON_POWER
#define MPEG_PAUSE BUTTON_HOME
@ -477,7 +468,7 @@ CONFIG_KEYPAD == SANSA_M200_PAD
#define MPEG_RW BUTTON_PREV
#define MPEG_FF BUTTON_NEXT
#elif CONFIG_KEYPAD == IHIFI_770_PAD
#elif CONFIG_KEYPAD == IHIFI_770_PAD || CONFIG_KEYPAD == IHIFI_800_PAD
#define MPEG_MENU BUTTON_PLAY
#define MPEG_STOP BUTTON_POWER
#define MPEG_PAUSE BUTTON_HOME
@ -486,10 +477,10 @@ CONFIG_KEYPAD == SANSA_M200_PAD
#define MPEG_RW BUTTON_PREV
#define MPEG_FF BUTTON_NEXT
#elif CONFIG_KEYPAD == IHIFI_800_PAD
#define MPEG_MENU BUTTON_PLAY
#elif CONFIG_KEYPAD == EROSQ_PAD
#define MPEG_MENU BUTTON_MENU
#define MPEG_STOP BUTTON_POWER
#define MPEG_PAUSE BUTTON_HOME
#define MPEG_PAUSE BUTTON_PLAY
#define MPEG_VOLDOWN BUTTON_VOL_DOWN
#define MPEG_VOLUP BUTTON_VOL_UP
#define MPEG_RW BUTTON_PREV
@ -2508,7 +2499,7 @@ enum plugin_status plugin_start(const void* parameter)
/* Enter button loop and process UI */
next_action = button_loop();
manual_skip = next_action & VIDEO_ACTION_MANUAL;
next_action &= ~VIDEO_ACTION_MANUAL;
next_action &= ~VIDEO_ACTION_MANUAL;
}
stream_close();

View file

@ -484,21 +484,7 @@
#define OSCILLOSCOPE_VOL_DOWN BUTTON_VOL_DOWN
#define NEED_LASTBUTTON
#elif (CONFIG_KEYPAD == XDUOO_X3II_PAD)
#define OSCILLOSCOPE_QUIT BUTTON_POWER
#define OSCILLOSCOPE_DRAWMODE_PRE BUTTON_PLAY
#define OSCILLOSCOPE_DRAWMODE (BUTTON_PLAY | BUTTON_REL)
#define OSCILLOSCOPE_ORIENTATION_PRE BUTTON_PLAY
#define OSCILLOSCOPE_ORIENTATION (BUTTON_PLAY | BUTTON_REPEAT)
#define OSCILLOSCOPE_ADVMODE BUTTON_HOME
#define OSCILLOSCOPE_PAUSE BUTTON_OPTION
#define OSCILLOSCOPE_SPEED_UP BUTTON_NEXT
#define OSCILLOSCOPE_SPEED_DOWN BUTTON_PREV
#define OSCILLOSCOPE_VOL_UP BUTTON_VOL_UP
#define OSCILLOSCOPE_VOL_DOWN BUTTON_VOL_DOWN
#define NEED_LASTBUTTON
#elif (CONFIG_KEYPAD == XDUOO_X20_PAD)
#elif (CONFIG_KEYPAD == XDUOO_X3II_PAD) || (CONFIG_KEYPAD == XDUOO_X20_PAD)
#define OSCILLOSCOPE_QUIT BUTTON_POWER
#define OSCILLOSCOPE_DRAWMODE_PRE BUTTON_PLAY
#define OSCILLOSCOPE_DRAWMODE (BUTTON_PLAY | BUTTON_REL)
@ -526,7 +512,7 @@
#define OSCILLOSCOPE_VOL_DOWN BUTTON_VOL_DOWN
#define NEED_LASTBUTTON
#elif (CONFIG_KEYPAD == IHIFI_770_PAD)
#elif (CONFIG_KEYPAD == IHIFI_770_PAD) || (CONFIG_KEYPAD == IHIFI_800_PAD)
#define OSCILLOSCOPE_QUIT BUTTON_POWER
#define OSCILLOSCOPE_DRAWMODE_PRE BUTTON_PLAY
#define OSCILLOSCOPE_DRAWMODE (BUTTON_PLAY | BUTTON_REL)
@ -540,19 +526,16 @@
#define OSCILLOSCOPE_VOL_DOWN BUTTON_VOL_DOWN
#define NEED_LASTBUTTON
#elif (CONFIG_KEYPAD == IHIFI_800_PAD)
#define OSCILLOSCOPE_QUIT BUTTON_POWER
#define OSCILLOSCOPE_DRAWMODE_PRE BUTTON_PLAY
#define OSCILLOSCOPE_DRAWMODE (BUTTON_PLAY | BUTTON_REL)
#define OSCILLOSCOPE_ORIENTATION_PRE BUTTON_PLAY
#define OSCILLOSCOPE_ORIENTATION (BUTTON_PLAY | BUTTON_REPEAT)
#define OSCILLOSCOPE_ADVMODE BUTTON_HOME
#define OSCILLOSCOPE_PAUSE (BUTTON_HOME | BUTTON_REPEAT)
#define OSCILLOSCOPE_SPEED_UP BUTTON_NEXT
#define OSCILLOSCOPE_SPEED_DOWN BUTTON_PREV
#define OSCILLOSCOPE_VOL_UP BUTTON_VOL_UP
#define OSCILLOSCOPE_VOL_DOWN BUTTON_VOL_DOWN
#define NEED_LASTBUTTON
#elif CONFIG_KEYPAD == EROSQ_PAD
#define OSCILLOSCOPE_QUIT BUTTON_POWER
#define OSCILLOSCOPE_DRAWMODE BUTTON_PREV
#define OSCILLOSCOPE_ADVMODE BUTTON_NEXT
#define OSCILLOSCOPE_ORIENTATION BUTTON_BACK
#define OSCILLOSCOPE_PAUSE BUTTON_PLAY
#define OSCILLOSCOPE_SPEED_UP BUTTON_SCROLL_FWD
#define OSCILLOSCOPE_SPEED_DOWN BUTTON_SCROLL_BACK
#define OSCILLOSCOPE_VOL_UP BUTTON_VOL_UP
#define OSCILLOSCOPE_VOL_DOWN BUTTON_VOL_DOWN
#else
#error No keymap defined!
@ -881,7 +864,7 @@ static void anim_draw_cursor_h(int x)
{
#if LCD_DEPTH > 1
rb->lcd_set_foreground(CURSOR_COLOR);
rb->lcd_vline(x, 0, LCD_HEIGHT-1);
rb->lcd_vline(x, 0, LCD_HEIGHT-1);
rb->lcd_set_foreground(GRAPH_COLOR);
#else
rb->lcd_set_drawmode(DRMODE_COMPLEMENT);
@ -895,7 +878,7 @@ static void anim_draw_cursor_v(int y)
{
#if LCD_DEPTH > 1 /* cursor bar */
rb->lcd_set_foreground(CURSOR_COLOR);
rb->lcd_hline(0, LCD_WIDTH-1, y);
rb->lcd_hline(0, LCD_WIDTH-1, y);
rb->lcd_set_foreground(GRAPH_COLOR);
#else
rb->lcd_set_drawmode(DRMODE_COMPLEMENT);
@ -1040,9 +1023,9 @@ static long anim_peaks_horizontal(void)
}
else
{
left = last_left
left = last_left
+ (LCD_WIDTH - last_pos) * (last_left - cur_left) / d;
right = last_right
right = last_right
+ (LCD_WIDTH - last_pos) * (last_right - cur_right) / d;
rb->lcd_drawline(
@ -1066,7 +1049,7 @@ static long anim_peaks_horizontal(void)
}
}
break;
case DRAW_PIXEL:
left = last_left;
right = last_right;
@ -1090,14 +1073,14 @@ static long anim_peaks_horizontal(void)
last_left = cur_left;
last_right = cur_right;
if (full_update)
{
osd_lcd_update();
}
else
{
anim_draw_cursor_h(cur_x + 1); /* cursor bar */
anim_draw_cursor_h(cur_x + 1); /* cursor bar */
if (cur_x > last_pos)
{
@ -1164,7 +1147,7 @@ static long anim_peaks_vertical(void)
cur_y -= shift;
last_pos -= shift;
}
else
else
{
cur_y -= LCD_HEIGHT;
}
@ -1219,7 +1202,7 @@ static long anim_peaks_vertical(void)
}
else
{
left = last_left
left = last_left
+ (LCD_HEIGHT - last_pos) * (last_left - cur_left) / d;
right = last_right
+ (LCD_HEIGHT - last_pos) * (last_right - cur_right) / d;
@ -1245,7 +1228,7 @@ static long anim_peaks_vertical(void)
}
}
break;
case DRAW_PIXEL:
left = last_left;
right = last_right;
@ -1269,7 +1252,7 @@ static long anim_peaks_vertical(void)
last_left = cur_left;
last_right = cur_right;
if (full_update)
{
osd_lcd_update();
@ -1358,7 +1341,7 @@ static void waveform_buffer_done(void)
waveform_buffer_have = have;
}
/* where the samples are obtained and buffered */
static void waveform_buffer_callback(const void *start, size_t size)
{
@ -2053,7 +2036,7 @@ enum plugin_status plugin_start(const void* parameter)
osc_popupmsg(OSC_MSG_GRAPHMODE, osc.graphmode);
break;
#endif /* OSCILLOSCOPE_GRAPHMODE */
case OSCILLOSCOPE_ORIENTATION:
#ifdef OSCILLOSCOPE_ORIENTATION_PRE
if (lastbutton != OSCILLOSCOPE_ORIENTATION_PRE)
@ -2075,7 +2058,7 @@ enum plugin_status plugin_start(const void* parameter)
graphmode_pause_unpause(paused);
osc_popupmsg(OSC_MSG_PAUSED, paused ? 1 : 0);
break;
case OSCILLOSCOPE_SPEED_UP:
case OSCILLOSCOPE_SPEED_UP | BUTTON_REPEAT:
{
@ -2088,7 +2071,7 @@ enum plugin_status plugin_start(const void* parameter)
osc_popupmsg(OSC_MSG_SPEED, *val);
break;
}
case OSCILLOSCOPE_SPEED_DOWN:
case OSCILLOSCOPE_SPEED_DOWN | BUTTON_REPEAT:
{

View file

@ -364,16 +364,7 @@
#define PACMAN_1UP BUTTON_VOLUP
#define PACMAN_COIN BUTTON_VOLDOWN
#elif CONFIG_KEYPAD == XDUOO_X3II_PAD
#define PACMAN_UP BUTTON_PREV
#define PACMAN_DOWN BUTTON_NEXT
#define PACMAN_LEFT BUTTON_HOME
#define PACMAN_RIGHT BUTTON_VOL_DOWN
#define PACMAN_MENU BUTTON_POWER
#define PACMAN_1UP BUTTON_VOL_UP
#define PACMAN_COIN BUTTON_PLAY
#elif CONFIG_KEYPAD == XDUOO_X20_PAD
#elif CONFIG_KEYPAD == XDUOO_X3II_PAD || CONFIG_KEYPAD == XDUOO_X20_PAD
#define PACMAN_UP BUTTON_PREV
#define PACMAN_DOWN BUTTON_NEXT
#define PACMAN_LEFT BUTTON_HOME
@ -391,7 +382,8 @@
#define PACMAN_1UP BUTTON_VOL_UP
#define PACMAN_COIN BUTTON_PLAY
#elif CONFIG_KEYPAD == IHIFI_770_PAD
#elif CONFIG_KEYPAD == IHIFI_770_PAD || CONFIG_KEYPAD == IHIFI_800_PAD
#define PACMAN_UP BUTTON_PREV
#define PACMAN_DOWN BUTTON_NEXT
#define PACMAN_LEFT BUTTON_HOME
@ -400,13 +392,12 @@
#define PACMAN_1UP BUTTON_VOL_UP
#define PACMAN_COIN BUTTON_PLAY
#elif CONFIG_KEYPAD == IHIFI_800_PAD
#elif CONFIG_KEYPAD == EROSQ_PAD
#define PACMAN_UP BUTTON_PREV
#define PACMAN_DOWN BUTTON_NEXT
#define PACMAN_LEFT BUTTON_HOME
#define PACMAN_RIGHT BUTTON_VOL_DOWN
#define PACMAN_MENU BUTTON_POWER
#define PACMAN_LEFT BUTTON_SCROLL_BACK
#define PACMAN_RIGHT BUTTON_SCROLL_FWD
#define PACMAN_MENU BUTTON_MENU
#define PACMAN_1UP BUTTON_VOL_UP
#define PACMAN_COIN BUTTON_PLAY
@ -516,7 +507,7 @@
*/
#if defined(TOSHIBA_GIGABEAT_S) || defined (TOSHIBA_GIGABEAT_F) || \
defined(SANSA_FUZEPLUS)
/* Gigabeat S,F and Sansa Fuze+ can manage the full framerate
/* Gigabeat S,F and Sansa Fuze+ can manage the full framerate
(1 in 1 frames) */
#define FPS 60
#elif defined(IPOD_NANO)

View file

@ -626,24 +626,7 @@ CONFIG_KEYPAD == MROBE500_PAD
#define LVL_UP_TEXT "VOL+"
#define LVL_DOWN_TEXT "VOL-"
#elif CONFIG_KEYPAD == XDUOO_X3II_PAD
#define PEGBOX_SELECT BUTTON_PLAY
#define PEGBOX_QUIT BUTTON_POWER
#define PEGBOX_RESTART (BUTTON_POWER | BUTTON_HOME)
#define PEGBOX_LVL_UP BUTTON_VOL_UP
#define PEGBOX_LVL_DOWN BUTTON_VOL_DOWN
#define PEGBOX_UP BUTTON_HOME
#define PEGBOX_DOWN BUTTON_OPTION
#define PEGBOX_RIGHT BUTTON_NEXT
#define PEGBOX_LEFT BUTTON_PREV
#define SELECT_TEXT "PLAY"
#define QUIT_TEXT "POWER"
#define RESTART_TEXT "HOME"
#define LVL_UP_TEXT "VOL+"
#define LVL_DOWN_TEXT "VOL-"
#elif CONFIG_KEYPAD == XDUOO_X20_PAD
#elif CONFIG_KEYPAD == XDUOO_X3II_PAD || CONFIG_KEYPAD == XDUOO_X20_PAD
#define PEGBOX_SELECT BUTTON_PLAY
#define PEGBOX_QUIT BUTTON_POWER
#define PEGBOX_RESTART (BUTTON_POWER | BUTTON_HOME)
@ -677,7 +660,7 @@ CONFIG_KEYPAD == MROBE500_PAD
#define LVL_UP_TEXT "VOL+"
#define LVL_DOWN_TEXT "VOL-"
#elif CONFIG_KEYPAD == IHIFI_770_PAD
#elif CONFIG_KEYPAD == IHIFI_770_PAD || CONFIG_KEYPAD == IHIFI_800_PAD
#define PEGBOX_SELECT BUTTON_PLAY
#define PEGBOX_QUIT BUTTON_POWER
#define PEGBOX_RESTART (BUTTON_POWER | BUTTON_HOME)
@ -694,16 +677,16 @@ CONFIG_KEYPAD == MROBE500_PAD
#define LVL_UP_TEXT "VOL+"
#define LVL_DOWN_TEXT "VOL-"
#elif CONFIG_KEYPAD == IHIFI_800_PAD
#elif CONFIG_KEYPAD == FIIO_M3K_PAD
#define PEGBOX_SELECT BUTTON_PLAY
#define PEGBOX_QUIT BUTTON_POWER
#define PEGBOX_RESTART (BUTTON_POWER | BUTTON_HOME)
#define PEGBOX_LVL_UP (BUTTON_POWER | BUTTON_VOL_UP)
#define PEGBOX_LVL_DOWN (BUTTON_POWER | BUTTON_VOL_DOWN)
#define PEGBOX_UP BUTTON_PREV
#define PEGBOX_DOWN BUTTON_NEXT
#define PEGBOX_RIGHT BUTTON_HOME
#define PEGBOX_LEFT BUTTON_VOL_DOWN
#define PEGBOX_LVL_UP BUTTON_VOL_UP
#define PEGBOX_LVL_DOWN BUTTON_VOL_DOWN
#define PEGBOX_UP BUTTON_HOME
#define PEGBOX_DOWN BUTTON_OPTION
#define PEGBOX_RIGHT BUTTON_NEXT
#define PEGBOX_LEFT BUTTON_PREV
#define SELECT_TEXT "PLAY"
#define QUIT_TEXT "POWER"
@ -711,11 +694,24 @@ CONFIG_KEYPAD == MROBE500_PAD
#define LVL_UP_TEXT "VOL+"
#define LVL_DOWN_TEXT "VOL-"
#else
#error Unsupported keymap!
#endif
#elif CONFIG_KEYPAD == EROSQ_PAD
#define PEGBOX_SELECT BUTTON_PLAY
#define PEGBOX_QUIT BUTTON_POWER
#define PEGBOX_RESTART BUTTON_BACK
#define PEGBOX_LVL_UP BUTTON_VOL_UP
#define PEGBOX_LVL_DOWN BUTTON_VOL_DOWN
#define PEGBOX_UP BUTTON_PREV
#define PEGBOX_DOWN BUTTON_NEXT
#define PEGBOX_RIGHT BUTTON_SCROLL_FWD
#define PEGBOX_LEFT BUTTON_SCROLL_BACK
#ifdef HAVE_TOUCHSCREEN
#define SELECT_TEXT "PLAY"
#define QUIT_TEXT "POWER"
#define RESTART_TEXT "BACK"
#define LVL_UP_TEXT "VOL+"
#define LVL_DOWN_TEXT "VOL-"
#elif defined(HAVE_TOUCHSCREEN)
#ifndef PEGBOX_QUIT
#define PEGBOX_QUIT BUTTON_TOPLEFT
#endif
@ -758,9 +754,10 @@ CONFIG_KEYPAD == MROBE500_PAD
#ifndef LVL_DOWN_TEXT
#define LVL_DOWN_TEXT "BOTTOMRIGHT"
#endif
#else
#error Unsupported keymap!
#endif
/* get several sizes from the bitmaps */
#ifdef BMPWIDTH_pegbox_pieces
#define PIECE_WIDTH BMPWIDTH_pegbox_pieces
@ -1083,7 +1080,7 @@ static void pegbox_draw_board(struct game_context* pb)
if(type != SPACE) {
rb->lcd_bitmap_part(pegbox_pieces, 0, (type-1)*PIECE_HEIGHT,
STRIDE( SCREEN_MAIN,
STRIDE( SCREEN_MAIN,
BMPWIDTH_pegbox_pieces,BMPHEIGHT_pegbox_pieces),
c * PIECE_WIDTH + BOARD_X,
r * PIECE_HEIGHT + BOARD_Y, PIECE_WIDTH,

View file

@ -293,15 +293,7 @@ CONFIG_KEYPAD == MROBE500_PAD
#define PONG_RIGHT_UP BUTTON_HOME
#define PONG_RIGHT_DOWN BUTTON_NEXT
#elif CONFIG_KEYPAD == XDUOO_X3II_PAD
#define PONG_QUIT BUTTON_POWER
#define PONG_PAUSE BUTTON_PLAY
#define PONG_LEFT_UP BUTTON_PREV
#define PONG_LEFT_DOWN BUTTON_OPTION
#define PONG_RIGHT_UP BUTTON_HOME
#define PONG_RIGHT_DOWN BUTTON_NEXT
#elif CONFIG_KEYPAD == XDUOO_X20_PAD
#elif CONFIG_KEYPAD == XDUOO_X3II_PAD || CONFIG_KEYPAD == XDUOO_X20_PAD
#define PONG_QUIT BUTTON_POWER
#define PONG_PAUSE BUTTON_PLAY
#define PONG_LEFT_UP BUTTON_PREV
@ -317,7 +309,7 @@ CONFIG_KEYPAD == MROBE500_PAD
#define PONG_RIGHT_UP BUTTON_HOME
#define PONG_RIGHT_DOWN BUTTON_NEXT
#elif CONFIG_KEYPAD == IHIFI_770_PAD
#elif CONFIG_KEYPAD == IHIFI_770_PAD || CONFIG_KEYPAD == IHIFI_800_PAD
#define PONG_QUIT BUTTON_POWER
#define PONG_PAUSE BUTTON_PREV
#define PONG_LEFT_UP BUTTON_PLAY
@ -325,13 +317,14 @@ CONFIG_KEYPAD == MROBE500_PAD
#define PONG_RIGHT_UP BUTTON_VOL_UP
#define PONG_RIGHT_DOWN BUTTON_VOL_DOWN
#elif CONFIG_KEYPAD == IHIFI_800_PAD
#elif CONFIG_KEYPAD == EROSQ_PAD
#define PONG_QUIT BUTTON_POWER
#define PONG_PAUSE BUTTON_PREV
#define PONG_LEFT_UP BUTTON_PLAY
#define PONG_LEFT_DOWN BUTTON_HOME
#define PONG_RIGHT_UP BUTTON_VOL_UP
#define PONG_RIGHT_DOWN BUTTON_VOL_DOWN
#define PONG_PAUSE BUTTON_PLAY
#define PONG_LEFT_UP BUTTON_SCROLL_BACK
#define PONG_LEFT_DOWN BUTTON_SCROLL_FWD
#define PONG_RIGHT_UP BUTTON_PREV
#define PONG_RIGHT_DOWN BUTTON_NEXT
#else
#error No keymap defined!

View file

@ -45,9 +45,9 @@
#define REVERSI_BUTTON_LEFT (BUTTON_LEFT | BUTTON_SCROLL_BACK)
#define REVERSI_BUTTON_RIGHT (BUTTON_RIGHT | BUTTON_SCROLL_FWD)
#define REVERSI_BUTTON_MAKE_MOVE BUTTON_SELECT
#define REVERSI_BUTTON_MAKE_MOVE_SHORTPRESS
#define REVERSI_BUTTON_MAKE_MOVE_SHORTPRESS
#define REVERSI_BUTTON_MENU BUTTON_SELECT
#define REVERSI_BUTTON_MENU_LONGPRESS
#define REVERSI_BUTTON_MENU_LONGPRESS
#elif (CONFIG_KEYPAD == IAUDIO_X5M5_PAD)
#define REVERSI_BUTTON_QUIT BUTTON_POWER
@ -96,9 +96,9 @@
#define REVERSI_BUTTON_LEFT BUTTON_LEFT
#define REVERSI_BUTTON_RIGHT BUTTON_RIGHT
#define REVERSI_BUTTON_MAKE_MOVE BUTTON_SELECT
#define REVERSI_BUTTON_MAKE_MOVE_SHORTPRESS
#define REVERSI_BUTTON_MAKE_MOVE_SHORTPRESS
#define REVERSI_BUTTON_MENU BUTTON_SELECT
#define REVERSI_BUTTON_MENU_LONGPRESS
#define REVERSI_BUTTON_MENU_LONGPRESS
#elif (CONFIG_KEYPAD == SANSA_FUZE_PAD)
#define REVERSI_BUTTON_QUIT (BUTTON_HOME|BUTTON_REPEAT)
@ -107,9 +107,9 @@
#define REVERSI_BUTTON_LEFT BUTTON_LEFT
#define REVERSI_BUTTON_RIGHT BUTTON_RIGHT
#define REVERSI_BUTTON_MAKE_MOVE BUTTON_SELECT
#define REVERSI_BUTTON_MAKE_MOVE_SHORTPRESS
#define REVERSI_BUTTON_MAKE_MOVE_SHORTPRESS
#define REVERSI_BUTTON_MENU BUTTON_SELECT
#define REVERSI_BUTTON_MENU_LONGPRESS
#define REVERSI_BUTTON_MENU_LONGPRESS
#elif CONFIG_KEYPAD == MROBE500_PAD
#define REVERSI_BUTTON_QUIT BUTTON_POWER
@ -233,17 +233,17 @@
#define REVERSI_BUTTON_UP BUTTON_REW
#define REVERSI_BUTTON_DOWN BUTTON_FF
#define REVERSI_BUTTON_LEFT BUTTON_VOL_DOWN
#define REVERSI_BUTTON_RIGHT BUTTON_VOL_UP
#define REVERSI_BUTTON_RIGHT BUTTON_VOL_UP
#define REVERSI_BUTTON_MAKE_MOVE BUTTON_FUNC
#define REVERSI_BUTTON_MAKE_MOVE_SHORTPRESS
#define REVERSI_BUTTON_MAKE_MOVE_SHORTPRESS
#define REVERSI_BUTTON_MENU BUTTON_FUNC
#define REVERSI_BUTTON_MENU_LONGPRESS
#define REVERSI_BUTTON_MENU_LONGPRESS
#elif CONFIG_KEYPAD == MPIO_HD300_PAD
#define REVERSI_BUTTON_UP BUTTON_UP
#define REVERSI_BUTTON_DOWN BUTTON_DOWN
#define REVERSI_BUTTON_LEFT BUTTON_REW
#define REVERSI_BUTTON_RIGHT BUTTON_FF
#define REVERSI_BUTTON_RIGHT BUTTON_FF
#define REVERSI_BUTTON_MAKE_MOVE BUTTON_ENTER
#define REVERSI_BUTTON_MENU BUTTON_MENU
@ -251,7 +251,7 @@
#define REVERSI_BUTTON_UP BUTTON_UP
#define REVERSI_BUTTON_DOWN BUTTON_DOWN
#define REVERSI_BUTTON_LEFT BUTTON_LEFT
#define REVERSI_BUTTON_RIGHT BUTTON_RIGHT
#define REVERSI_BUTTON_RIGHT BUTTON_RIGHT
#define REVERSI_BUTTON_MAKE_MOVE BUTTON_PLAYPAUSE
#define REVERSI_BUTTON_MENU BUTTON_BACK
@ -269,7 +269,7 @@
#define REVERSI_BUTTON_UP BUTTON_UP
#define REVERSI_BUTTON_DOWN BUTTON_DOWN
#define REVERSI_BUTTON_LEFT BUTTON_LEFT
#define REVERSI_BUTTON_RIGHT BUTTON_RIGHT
#define REVERSI_BUTTON_RIGHT BUTTON_RIGHT
#define REVERSI_BUTTON_MAKE_MOVE BUTTON_SELECT
#define REVERSI_BUTTON_MENU BUTTON_POWER
@ -319,18 +319,7 @@
#define REVERSI_BUTTON_MENU BUTTON_PLAY
#define REVERSI_BUTTON_MENU_LONGPRESS
#elif CONFIG_KEYPAD == XDUOO_X3II_PAD
#define REVERSI_BUTTON_QUIT BUTTON_POWER
#define REVERSI_BUTTON_UP BUTTON_HOME
#define REVERSI_BUTTON_DOWN BUTTON_OPTION
#define REVERSI_BUTTON_LEFT BUTTON_PREV
#define REVERSI_BUTTON_RIGHT BUTTON_NEXT
#define REVERSI_BUTTON_MAKE_MOVE BUTTON_PLAY
#define REVERSI_BUTTON_MAKE_MOVE_SHORTPRESS
#define REVERSI_BUTTON_MENU BUTTON_PLAY
#define REVERSI_BUTTON_MENU_LONGPRESS
#elif CONFIG_KEYPAD == XDUOO_X20_PAD
#elif CONFIG_KEYPAD == XDUOO_X3II_PAD || CONFIG_KEYPAD == XDUOO_X20_PAD
#define REVERSI_BUTTON_QUIT BUTTON_POWER
#define REVERSI_BUTTON_UP BUTTON_HOME
#define REVERSI_BUTTON_DOWN BUTTON_OPTION
@ -352,27 +341,25 @@
#define REVERSI_BUTTON_MENU BUTTON_PLAY
#define REVERSI_BUTTON_MENU_LONGPRESS
#elif CONFIG_KEYPAD == IHIFI_770_PAD
#elif CONFIG_KEYPAD == IHIFI_770_PAD || CONFIG_KEYPAD == IHIFI_800_PAD
#define REVERSI_BUTTON_QUIT BUTTON_POWER
#define REVERSI_BUTTON_UP BUTTON_PREV
#define REVERSI_BUTTON_DOWN BUTTON_NEXT
#define REVERSI_BUTTON_LEFT BUTTON_PREV
#define REVERSI_BUTTON_RIGHT BUTTON_VOL_DOWN
#define REVERSI_BUTTON_MAKE_MOVE BUTTON_PLAY
#define REVERSI_BUTTON_MAKE_MOVE_SHORTPRESS
#define REVERSI_BUTTON_MAKE_MOVE_SHORTPRESS
#define REVERSI_BUTTON_MENU BUTTON_PLAY
#define REVERSI_BUTTON_MENU_LONGPRESS
#define REVERSI_BUTTON_MENU_LONGPRESS
#elif CONFIG_KEYPAD == IHIFI_800_PAD
#elif CONFIG_KEYPAD == EROSQ_PAD
#define REVERSI_BUTTON_QUIT BUTTON_POWER
#define REVERSI_BUTTON_UP BUTTON_PREV
#define REVERSI_BUTTON_DOWN BUTTON_NEXT
#define REVERSI_BUTTON_LEFT BUTTON_PREV
#define REVERSI_BUTTON_RIGHT BUTTON_VOL_DOWN
#define REVERSI_BUTTON_LEFT BUTTON_SCROLL_BACK
#define REVERSI_BUTTON_RIGHT BUTTON_SCROLL_FWD
#define REVERSI_BUTTON_MAKE_MOVE BUTTON_PLAY
#define REVERSI_BUTTON_MAKE_MOVE_SHORTPRESS
#define REVERSI_BUTTON_MENU BUTTON_PLAY
#define REVERSI_BUTTON_MENU_LONGPRESS
#define REVERSI_BUTTON_MENU BUTTON_MENU
#else
#error No keymap defined!

View file

@ -431,31 +431,7 @@
#define ROCKBLOX_ROTATE_CCW BUTTON_VOLDOWN
#define ROCKBLOX_DOWN BUTTON_DOWN
#elif CONFIG_KEYPAD == XDUOO_X3_PAD
#define ROCKBLOX_OFF BUTTON_POWER
#define ROCKBLOX_ROTATE_CCW BUTTON_HOME
#define ROCKBLOX_ROTATE_CCW2 BUTTON_VOL_DOWN
#define ROCKBLOX_ROTATE_CW BUTTON_VOL_UP
#define ROCKBLOX_DOWN BUTTON_OPTION
#define ROCKBLOX_LEFT BUTTON_PREV
#define ROCKBLOX_RIGHT BUTTON_NEXT
#define ROCKBLOX_DROP (BUTTON_PLAY|BUTTON_REL)
#define ROCKBLOX_RESTART (BUTTON_PLAY|BUTTON_REPEAT)
#elif CONFIG_KEYPAD == XDUOO_X3II_PAD
#define ROCKBLOX_OFF BUTTON_POWER
#define ROCKBLOX_ROTATE_CCW BUTTON_HOME
#define ROCKBLOX_ROTATE_CCW2 BUTTON_VOL_DOWN
#define ROCKBLOX_ROTATE_CW BUTTON_VOL_UP
#define ROCKBLOX_DOWN BUTTON_OPTION
#define ROCKBLOX_LEFT BUTTON_PREV
#define ROCKBLOX_RIGHT BUTTON_NEXT
#define ROCKBLOX_DROP (BUTTON_PLAY|BUTTON_REL)
#define ROCKBLOX_RESTART (BUTTON_PLAY|BUTTON_REPEAT)
#elif CONFIG_KEYPAD == XDUOO_X20_PAD
#elif (CONFIG_KEYPAD == XDUOO_X3_PAD) || (CONFIG_KEYPAD == XDUOO_X3II_PAD) || (CONFIG_KEYPAD == XDUOO_X20_PAD)
#define ROCKBLOX_OFF BUTTON_POWER
#define ROCKBLOX_ROTATE_CCW BUTTON_HOME
@ -479,7 +455,7 @@
#define ROCKBLOX_DROP (BUTTON_PLAY|BUTTON_REL)
#define ROCKBLOX_RESTART (BUTTON_PLAY|BUTTON_REPEAT)
#elif CONFIG_KEYPAD == IHIFI_770_PAD
#elif (CONFIG_KEYPAD == IHIFI_770_PAD) || (CONFIG_KEYPAD == IHIFI_800_PAD)
#define ROCKBLOX_OFF BUTTON_POWER
#define ROCKBLOX_ROTATE_CCW BUTTON_HOME
@ -491,17 +467,15 @@
#define ROCKBLOX_DROP (BUTTON_POWER|BUTTON_PLAY)
#define ROCKBLOX_RESTART (BUTTON_POWER|BUTTON_REPEAT)
#elif CONFIG_KEYPAD == IHIFI_800_PAD
#elif CONFIG_KEYPAD == EROSQ_PAD
#define ROCKBLOX_OFF BUTTON_POWER
#define ROCKBLOX_ROTATE_CCW BUTTON_HOME
#define ROCKBLOX_ROTATE_CCW2 BUTTON_VOL_DOWN
#define ROCKBLOX_ROTATE_CW BUTTON_VOL_UP
#define ROCKBLOX_DOWN BUTTON_PLAY
#define ROCKBLOX_ROTATE_CCW BUTTON_SCROLL_BACK
#define ROCKBLOX_ROTATE_CW BUTTON_SCROLL_FWD
#define ROCKBLOX_DOWN BUTTON_MENU
#define ROCKBLOX_LEFT BUTTON_PREV
#define ROCKBLOX_RIGHT BUTTON_NEXT
#define ROCKBLOX_DROP (BUTTON_POWER|BUTTON_PLAY)
#define ROCKBLOX_RESTART (BUTTON_POWER|BUTTON_REPEAT)
#define ROCKBLOX_DROP BUTTON_PLAY
#define ROCKBLOX_RESTART BUTTON_BACK
#else
#error No keymap defined!

View file

@ -425,17 +425,7 @@ static void setoptions (void)
options.SELECT = BUTTON_VOL_UP;
options.MENU = BUTTON_POWER;
#elif CONFIG_KEYPAD == XDUOO_X3II_PAD
options.UP = BUTTON_PREV;
options.DOWN = BUTTON_NEXT;
options.A = BUTTON_HOME;
options.B = BUTTON_OPTION;
options.START = BUTTON_VOL_DOWN;
options.SELECT = BUTTON_VOL_UP;
options.MENU = BUTTON_POWER;
#elif CONFIG_KEYPAD == XDUOO_X20_PAD
#elif CONFIG_KEYPAD == XDUOO_X3II_PAD || CONFIG_KEYPAD == XDUOO_X20_PAD
options.UP = BUTTON_PREV;
options.DOWN = BUTTON_NEXT;
@ -455,7 +445,7 @@ static void setoptions (void)
options.SELECT = BUTTON_VOL_UP;
options.MENU = BUTTON_POWER;
#elif CONFIG_KEYPAD == IHIFI_770_PAD
#elif CONFIG_KEYPAD == IHIFI_770_PAD || CONFIG_KEYPAD == IHIFI_800_PAD
options.UP = BUTTON_PREV;
options.DOWN = BUTTON_NEXT;
@ -465,14 +455,16 @@ static void setoptions (void)
options.SELECT = BUTTON_HOME;
options.MENU = BUTTON_POWER;
#elif CONFIG_KEYPAD == IHIFI_800_PAD
options.UP = BUTTON_PREV;
options.DOWN = BUTTON_NEXT;
#elif CONFIG_KEYPAD == EROSQ_PAD
options.UP = BUTTON_PREV;
options.DOWN = BUTTON_NEXT;
options.LEFT = BUTTON_SCROLL_BACK;
options.RIGHT = BUTTON_SCROLL_FWD;
options.A = BUTTON_VOL_UP;
options.B = BUTTON_VOL_DOWN;
options.START = BUTTON_PLAY;
options.SELECT = BUTTON_HOME;
options.A = BUTTON_MENU;
options.B = BUTTON_BACK;
options.START = BUTTON_VOL_DOWN;
options.SELECT = BUTTON_VOL_UP;
options.MENU = BUTTON_POWER;
#else

View file

@ -63,7 +63,7 @@
#define PUZZLE_PICTURE BUTTON_A
#elif (CONFIG_KEYPAD == SANSA_E200_PAD) || \
(CONFIG_KEYPAD == SANSA_C200_PAD)
(CONFIG_KEYPAD == SANSA_C200_PAD)
#define PUZZLE_QUIT BUTTON_POWER
#define PUZZLE_LEFT BUTTON_LEFT
#define PUZZLE_RIGHT BUTTON_RIGHT
@ -312,16 +312,7 @@ CONFIG_KEYPAD == MROBE500_PAD
#define PUZZLE_SHUFFLE (BUTTON_HOME | BUTTON_PWRALT)
#define PUZZLE_PICTURE BUTTON_PLAY
#elif (CONFIG_KEYPAD == XDUOO_X3II_PAD)
#define PUZZLE_QUIT BUTTON_POWER
#define PUZZLE_LEFT BUTTON_PREV
#define PUZZLE_RIGHT BUTTON_NEXT
#define PUZZLE_UP BUTTON_HOME
#define PUZZLE_DOWN BUTTON_OPTION
#define PUZZLE_SHUFFLE (BUTTON_HOME | BUTTON_POWER)
#define PUZZLE_PICTURE BUTTON_PLAY
#elif (CONFIG_KEYPAD == XDUOO_X20_PAD)
#elif (CONFIG_KEYPAD == XDUOO_X3II_PAD) || (CONFIG_KEYPAD == XDUOO_X20_PAD)
#define PUZZLE_QUIT BUTTON_POWER
#define PUZZLE_LEFT BUTTON_PREV
#define PUZZLE_RIGHT BUTTON_NEXT
@ -339,7 +330,7 @@ CONFIG_KEYPAD == MROBE500_PAD
#define PUZZLE_SHUFFLE (BUTTON_HOME | BUTTON_POWER)
#define PUZZLE_PICTURE BUTTON_PLAY
#elif (CONFIG_KEYPAD == IHIFI_770_PAD)
#elif (CONFIG_KEYPAD == IHIFI_770_PAD) || (CONFIG_KEYPAD == IHIFI_800_PAD)
#define PUZZLE_QUIT BUTTON_POWER
#define PUZZLE_LEFT BUTTON_HOME
#define PUZZLE_RIGHT BUTTON_VOL_DOWN
@ -348,15 +339,16 @@ CONFIG_KEYPAD == MROBE500_PAD
#define PUZZLE_SHUFFLE (BUTTON_HOME | BUTTON_POWER)
#define PUZZLE_PICTURE BUTTON_PLAY
#elif (CONFIG_KEYPAD == IHIFI_800_PAD)
#elif (CONFIG_KEYPAD == EROSQ_PAD)
#define PUZZLE_QUIT BUTTON_POWER
#define PUZZLE_LEFT BUTTON_HOME
#define PUZZLE_RIGHT BUTTON_VOL_DOWN
#define PUZZLE_LEFT BUTTON_SCROLL_BACK
#define PUZZLE_RIGHT BUTTON_SCROLL_FWD
#define PUZZLE_UP BUTTON_PREV
#define PUZZLE_DOWN BUTTON_NEXT
#define PUZZLE_SHUFFLE (BUTTON_HOME | BUTTON_POWER)
#define PUZZLE_SHUFFLE BUTTON_BACK
#define PUZZLE_PICTURE BUTTON_PLAY
#else
#error No keymap defined!
#endif
@ -383,13 +375,13 @@ CONFIG_KEYPAD == MROBE500_PAD
#ifndef PUZZLE_PICTURE
#define PUZZLE_PICTURE BUTTON_CENTER
#endif
#ifndef PUZZLE_QUIT_TEXT
#ifndef PUZZLE_QUIT_TEXT
#define PUZZLE_QUIT_TEXT "[TOPLEFT]"
#endif
#ifndef PUZZLE_SHUFFLE_TEXT
#ifndef PUZZLE_SHUFFLE_TEXT
#define PUZZLE_SHUFFLE_TEXT "[BOTTOMLEFT]"
#endif
#ifndef PUZZLE_PICTURE_TEXT
#ifndef PUZZLE_PICTURE_TEXT
#define PUZZLE_PICTURE_TEXT "[CENTER]"
#endif
#endif
@ -563,7 +555,7 @@ static void draw_spot(int p, int x, int y)
an appropriate hole graphic */
rb->lcd_bitmap_part(sliding_puzzle, ((p-1)%SPOTS_X)*SPOTS_WIDTH,
((p-1)/SPOTS_X)*SPOTS_HEIGHT,
STRIDE( SCREEN_MAIN,
STRIDE( SCREEN_MAIN,
BMPWIDTH_sliding_puzzle, BMPHEIGHT_sliding_puzzle),
x, y, SPOTS_WIDTH, SPOTS_HEIGHT);
#else
@ -580,8 +572,8 @@ static void draw_spot(int p, int x, int y)
{
rb->lcd_bitmap_part( puzzle_bmp_ptr, ((p-1)%SPOTS_X)*SPOTS_WIDTH,
((p-1)/SPOTS_X)*SPOTS_HEIGHT,
STRIDE( SCREEN_MAIN,
BMPWIDTH_sliding_puzzle, BMPHEIGHT_sliding_puzzle),
STRIDE( SCREEN_MAIN,
BMPWIDTH_sliding_puzzle, BMPHEIGHT_sliding_puzzle),
x, y, SPOTS_WIDTH, SPOTS_HEIGHT);
} else {
rb->lcd_drawrect(x, y, SPOTS_WIDTH, SPOTS_HEIGHT);

View file

@ -24,7 +24,7 @@ Snake!
by Itai Shaked
ok, a little explanation -
ok, a little explanation -
board holds the snake and apple position - 1+ - snake body (the number
represents the age [1 is the snake's head]).
-1 is an apple, and 0 is a clear spot.
@ -273,15 +273,7 @@ dir is the current direction of the snake - 0=up, 1=right, 2=down, 3=left;
#define SNAKE_DOWN BUTTON_OPTION
#define SNAKE_PLAYPAUSE BUTTON_PLAY
#elif CONFIG_KEYPAD == XDUOO_X3II_PAD
#define SNAKE_QUIT BUTTON_POWER
#define SNAKE_LEFT BUTTON_PREV
#define SNAKE_RIGHT BUTTON_NEXT
#define SNAKE_UP BUTTON_HOME
#define SNAKE_DOWN BUTTON_OPTION
#define SNAKE_PLAYPAUSE BUTTON_PLAY
#elif CONFIG_KEYPAD == XDUOO_X20_PAD
#elif CONFIG_KEYPAD == XDUOO_X3II_PAD || CONFIG_KEYPAD == XDUOO_X20_PAD
#define SNAKE_QUIT BUTTON_POWER
#define SNAKE_LEFT BUTTON_PREV
#define SNAKE_RIGHT BUTTON_NEXT
@ -297,7 +289,7 @@ dir is the current direction of the snake - 0=up, 1=right, 2=down, 3=left;
#define SNAKE_DOWN BUTTON_OPTION
#define SNAKE_PLAYPAUSE BUTTON_PLAY
#elif CONFIG_KEYPAD == IHIFI_770_PAD
#elif CONFIG_KEYPAD == IHIFI_770_PAD || CONFIG_KEYPAD == IHIFI_800_PAD
#define SNAKE_QUIT BUTTON_POWER
#define SNAKE_LEFT BUTTON_HOME
#define SNAKE_RIGHT BUTTON_VOL_DOWN
@ -305,10 +297,10 @@ dir is the current direction of the snake - 0=up, 1=right, 2=down, 3=left;
#define SNAKE_DOWN BUTTON_NEXT
#define SNAKE_PLAYPAUSE BUTTON_PLAY
#elif CONFIG_KEYPAD == IHIFI_800_PAD
#elif CONFIG_KEYPAD == EROSQ_PAD
#define SNAKE_QUIT BUTTON_POWER
#define SNAKE_LEFT BUTTON_HOME
#define SNAKE_RIGHT BUTTON_VOL_DOWN
#define SNAKE_LEFT BUTTON_SCROLL_BACK
#define SNAKE_RIGHT BUTTON_SCROLL_FWD
#define SNAKE_UP BUTTON_PREV
#define SNAKE_DOWN BUTTON_NEXT
#define SNAKE_PLAYPAUSE BUTTON_PLAY

View file

@ -401,16 +401,7 @@ CONFIG_KEYPAD == MROBE500_PAD
#define SNAKE2_PLAYPAUSE BUTTON_PLAY
#define SNAKE2_PLAYPAUSE_TEXT "PLAY"
#elif (CONFIG_KEYPAD == XDUOO_X3II_PAD)
#define SNAKE2_LEFT BUTTON_PREV
#define SNAKE2_RIGHT BUTTON_NEXT
#define SNAKE2_UP BUTTON_HOME
#define SNAKE2_DOWN BUTTON_OPTION
#define SNAKE2_QUIT BUTTON_POWER
#define SNAKE2_PLAYPAUSE BUTTON_PLAY
#define SNAKE2_PLAYPAUSE_TEXT "PLAY"
#elif (CONFIG_KEYPAD == XDUOO_X20_PAD)
#elif (CONFIG_KEYPAD == XDUOO_X3II_PAD) || (CONFIG_KEYPAD == XDUOO_X20_PAD)
#define SNAKE2_LEFT BUTTON_PREV
#define SNAKE2_RIGHT BUTTON_NEXT
#define SNAKE2_UP BUTTON_HOME
@ -428,7 +419,7 @@ CONFIG_KEYPAD == MROBE500_PAD
#define SNAKE2_PLAYPAUSE BUTTON_PLAY
#define SNAKE2_PLAYPAUSE_TEXT "PLAY"
#elif (CONFIG_KEYPAD == IHIFI_770_PAD)
#elif (CONFIG_KEYPAD == IHIFI_770_PAD) || (CONFIG_KEYPAD == IHIFI_800_PAD)
#define SNAKE2_LEFT BUTTON_HOME
#define SNAKE2_RIGHT BUTTON_VOL_DOWN
#define SNAKE2_UP BUTTON_PREV
@ -437,9 +428,9 @@ CONFIG_KEYPAD == MROBE500_PAD
#define SNAKE2_PLAYPAUSE BUTTON_PLAY
#define SNAKE2_PLAYPAUSE_TEXT "PLAY"
#elif (CONFIG_KEYPAD == IHIFI_800_PAD)
#define SNAKE2_LEFT BUTTON_HOME
#define SNAKE2_RIGHT BUTTON_VOL_DOWN
#elif (CONFIG_KEYPAD == EROSQ_PAD)
#define SNAKE2_LEFT BUTTON_SCROLL_BACK
#define SNAKE2_RIGHT BUTTON_SCROLL_FWD
#define SNAKE2_UP BUTTON_PREV
#define SNAKE2_DOWN BUTTON_NEXT
#define SNAKE2_QUIT BUTTON_POWER
@ -451,7 +442,7 @@ CONFIG_KEYPAD == MROBE500_PAD
#endif
#ifdef HAVE_TOUCHSCREEN
#ifndef SNAKE2_LEFT
#ifndef SNAKE2_LEFT
#define SNAKE2_LEFT BUTTON_MIDLEFT
#endif
#ifndef SNAKE2_RIGHT

View file

@ -631,23 +631,7 @@
#define BUTTON_SAVE BUTTON_PLAY
#define BUTTON_SAVE_NAME "PLAY"
#elif CONFIG_KEYPAD == XDUOO_X3II_PAD
#define SOKOBAN_LEFT BUTTON_PREV
#define SOKOBAN_RIGHT BUTTON_NEXT
#define SOKOBAN_UP BUTTON_HOME
#define SOKOBAN_DOWN BUTTON_OPTION
#define SOKOBAN_MENU BUTTON_POWER
#define SOKOBAN_UNDO_PRE BUTTON_PLAY
#define SOKOBAN_UNDO (BUTTON_PLAY | BUTTON_REL)
#define SOKOBAN_REDO (BUTTON_POWER | BUTTON_PLAY)
#define SOKOBAN_LEVEL_DOWN BUTTON_VOL_DOWN
#define SOKOBAN_LEVEL_REPEAT (BUTTON_PLAY | BUTTON_NEXT)
#define SOKOBAN_LEVEL_UP BUTTON_VOL_UP
#define SOKOBAN_PAUSE BUTTON_PLAY
#define BUTTON_SAVE BUTTON_PLAY
#define BUTTON_SAVE_NAME "PLAY"
#elif CONFIG_KEYPAD == XDUOO_X20_PAD
#elif CONFIG_KEYPAD == XDUOO_X3II_PAD || CONFIG_KEYPAD == XDUOO_X20_PAD
#define SOKOBAN_LEFT BUTTON_PREV
#define SOKOBAN_RIGHT BUTTON_NEXT
#define SOKOBAN_UP BUTTON_HOME
@ -679,7 +663,7 @@
#define BUTTON_SAVE BUTTON_PLAY
#define BUTTON_SAVE_NAME "PLAY"
#elif CONFIG_KEYPAD == IHIFI_770_PAD
#elif CONFIG_KEYPAD == IHIFI_770_PAD || CONFIG_KEYPAD == IHIFI_800_PAD
#define SOKOBAN_LEFT BUTTON_HOME
#define SOKOBAN_RIGHT BUTTON_VOL_DOWN
#define SOKOBAN_UP BUTTON_PREV
@ -695,18 +679,18 @@
#define BUTTON_SAVE BUTTON_PLAY
#define BUTTON_SAVE_NAME "PLAY"
#elif CONFIG_KEYPAD == IHIFI_800_PAD
#define SOKOBAN_LEFT BUTTON_HOME
#define SOKOBAN_RIGHT BUTTON_VOL_DOWN
#elif CONFIG_KEYPAD == EROSQ_PAD
#define SOKOBAN_LEFT BUTTON_SCROLL_BACK
#define SOKOBAN_RIGHT BUTTON_SCROLL_FWD
#define SOKOBAN_UP BUTTON_PREV
#define SOKOBAN_DOWN BUTTON_NEXT
#define SOKOBAN_MENU BUTTON_POWER
#define SOKOBAN_MENU BUTTON_MENU
#define SOKOBAN_UNDO_PRE BUTTON_PLAY
#define SOKOBAN_UNDO (BUTTON_PLAY | BUTTON_REL)
#define SOKOBAN_REDO (BUTTON_POWER | BUTTON_PLAY)
#define SOKOBAN_LEVEL_DOWN (BUTTON_POWER | BUTTON_VOL_DOWN)
#define SOKOBAN_LEVEL_REPEAT (BUTTON_POWER | BUTTON_HOME)
#define SOKOBAN_LEVEL_UP (BUTTON_POWER | BUTTON_VOL_UP)
#define SOKOBAN_LEVEL_DOWN BUTTON_VOL_DOWN
#define SOKOBAN_LEVEL_REPEAT BUTTON_BACK
#define SOKOBAN_LEVEL_UP BUTTON_VOL_UP
#define SOKOBAN_PAUSE BUTTON_PLAY
#define BUTTON_SAVE BUTTON_PLAY
#define BUTTON_SAVE_NAME "PLAY"
@ -1286,56 +1270,56 @@ static void update_screen(void)
case ' ': /* floor */
rb->lcd_bitmap_part(sokoban_tiles, 0, 0*SOKOBAN_TILESIZE,
STRIDE( SCREEN_MAIN,
STRIDE( SCREEN_MAIN,
BMPWIDTH_sokoban_tiles,
BMPHEIGHT_sokoban_tiles),
BMPHEIGHT_sokoban_tiles),
c, r, SOKOBAN_TILESIZE, SOKOBAN_TILESIZE);
break;
case '#': /* wall */
rb->lcd_bitmap_part(sokoban_tiles, 0, 1*SOKOBAN_TILESIZE,
STRIDE( SCREEN_MAIN,
BMPWIDTH_sokoban_tiles,
STRIDE( SCREEN_MAIN,
BMPWIDTH_sokoban_tiles,
BMPHEIGHT_sokoban_tiles),
c, r, SOKOBAN_TILESIZE, SOKOBAN_TILESIZE);
break;
case '$': /* box */
rb->lcd_bitmap_part(sokoban_tiles, 0, 2*SOKOBAN_TILESIZE,
STRIDE( SCREEN_MAIN,
BMPWIDTH_sokoban_tiles,
STRIDE( SCREEN_MAIN,
BMPWIDTH_sokoban_tiles,
BMPHEIGHT_sokoban_tiles),
c, r, SOKOBAN_TILESIZE,SOKOBAN_TILESIZE);
break;
case '*': /* box on goal */
rb->lcd_bitmap_part(sokoban_tiles, 0, 3*SOKOBAN_TILESIZE,
STRIDE( SCREEN_MAIN,
BMPWIDTH_sokoban_tiles,
STRIDE( SCREEN_MAIN,
BMPWIDTH_sokoban_tiles,
BMPHEIGHT_sokoban_tiles),
c, r, SOKOBAN_TILESIZE, SOKOBAN_TILESIZE);
break;
case '.': /* goal */
rb->lcd_bitmap_part(sokoban_tiles, 0, 4*SOKOBAN_TILESIZE,
STRIDE( SCREEN_MAIN,
BMPWIDTH_sokoban_tiles,
STRIDE( SCREEN_MAIN,
BMPWIDTH_sokoban_tiles,
BMPHEIGHT_sokoban_tiles),
c, r, SOKOBAN_TILESIZE, SOKOBAN_TILESIZE);
break;
case '@': /* player */
rb->lcd_bitmap_part(sokoban_tiles, 0, 5*SOKOBAN_TILESIZE,
STRIDE( SCREEN_MAIN,
BMPWIDTH_sokoban_tiles,
STRIDE( SCREEN_MAIN,
BMPWIDTH_sokoban_tiles,
BMPHEIGHT_sokoban_tiles),
c, r, SOKOBAN_TILESIZE, SOKOBAN_TILESIZE);
break;
case '+': /* player on goal */
rb->lcd_bitmap_part(sokoban_tiles, 0, 6*SOKOBAN_TILESIZE,
STRIDE( SCREEN_MAIN,
BMPWIDTH_sokoban_tiles,
STRIDE( SCREEN_MAIN,
BMPWIDTH_sokoban_tiles,
BMPHEIGHT_sokoban_tiles),
c, r, SOKOBAN_TILESIZE, SOKOBAN_TILESIZE);
break;

View file

@ -646,26 +646,7 @@ CONFIG_KEYPAD == MROBE500_PAD
# define HK_CUR2STACK "DBL PLAY"
# define HK_REM2STACK "NEXT"
#elif CONFIG_KEYPAD == XDUOO_X3II_PAD
# define SOL_QUIT BUTTON_POWER
# define SOL_UP BUTTON_HOME
# define SOL_DOWN BUTTON_OPTION
# define SOL_LEFT BUTTON_PREV
# define SOL_RIGHT BUTTON_NEXT
# define SOL_MOVE_PRE BUTTON_PLAY
# define SOL_MOVE (BUTTON_PLAY | BUTTON_REL)
# define SOL_DRAW (BUTTON_POWER | BUTTON_REPEAT)
# define SOL_REM2CUR BUTTON_VOL_DOWN
# define SOL_CUR2STACK_PRE BUTTON_PLAY
# define SOL_CUR2STACK (BUTTON_PLAY | BUTTON_REPEAT)
# define SOL_REM2STACK BUTTON_VOL_UP
# define HK_MOVE "PLAY"
# define HK_DRAW "DBL HOME"
# define HK_REM2CUR "PREV"
# define HK_CUR2STACK "DBL PLAY"
# define HK_REM2STACK "NEXT"
#elif CONFIG_KEYPAD == XDUOO_X20_PAD
#elif CONFIG_KEYPAD == XDUOO_X3II_PAD || CONFIG_KEYPAD == XDUOO_X20_PAD
# define SOL_QUIT BUTTON_POWER
# define SOL_UP BUTTON_HOME
# define SOL_DOWN BUTTON_OPTION
@ -703,7 +684,7 @@ CONFIG_KEYPAD == MROBE500_PAD
# define HK_CUR2STACK "DBL PLAY"
# define HK_REM2STACK "NEXT"
#elif CONFIG_KEYPAD == IHIFI_770_PAD
#elif CONFIG_KEYPAD == IHIFI_770_PAD || CONFIG_KEYPAD == IHIFI_800_PAD
# define SOL_QUIT BUTTON_POWER
# define SOL_UP BUTTON_PREV
# define SOL_DOWN BUTTON_NEXT
@ -722,24 +703,24 @@ CONFIG_KEYPAD == MROBE500_PAD
# define HK_CUR2STACK "DBL PLAY"
# define HK_REM2STACK "POWER+"
#elif CONFIG_KEYPAD == IHIFI_800_PAD
#elif CONFIG_KEYPAD == EROSQ_PAD
# define SOL_QUIT BUTTON_POWER
# define SOL_UP BUTTON_PREV
# define SOL_DOWN BUTTON_NEXT
# define SOL_LEFT BUTTON_HOME
# define SOL_RIGHT BUTTON_VOL_DOWN
# define SOL_MOVE_PRE BUTTON_VOL_UP
# define SOL_LEFT BUTTON_SCROLL_BACK
# define SOL_RIGHT BUTTON_SCROLL_FWD
# define SOL_MOVE_PRE BUTTON_PLAY
# define SOL_MOVE (BUTTON_PLAY | BUTTON_REL)
# define SOL_DRAW (BUTTON_POWER | BUTTON_REPEAT)
# define SOL_REM2CUR (BUTTON_POWER | BUTTON_VOL_DOWN)
# define SOL_REM2CUR BUTTON_VOL_DOWN
# define SOL_CUR2STACK_PRE BUTTON_PLAY
# define SOL_CUR2STACK (BUTTON_PLAY | BUTTON_REPEAT)
# define SOL_REM2STACK (BUTTON_POWER | BUTTON_VOL_UP)
# define SOL_REM2STACK BUTTON_VOL_UP
# define HK_MOVE "PLAY"
# define HK_DRAW "DBL POWER"
# define HK_REM2CUR "POWER"
# define HK_DRAW "DBL HOME"
# define HK_REM2CUR "PREV"
# define HK_CUR2STACK "DBL PLAY"
# define HK_REM2STACK "POWER+"
# define HK_REM2STACK "NEXT"
#else
#error No keymap defined!
@ -950,8 +931,8 @@ static void draw_card( card_t *card, int x, int y,
if( card->known )
{
rb->lcd_bitmap_part( card_deck, CARD_GFX_WIDTH * card->num,
CARD_GFX_HEIGHT * card->suit,
STRIDE(SCREEN_MAIN,
CARD_GFX_HEIGHT * card->suit,
STRIDE(SCREEN_MAIN,
BMPWIDTH_card_deck, BMPHEIGHT_card_deck),
x+1, y+1, CARD_GFX_WIDTH, CARD_GFX_HEIGHT );
}
@ -967,7 +948,7 @@ static void draw_card( card_t *card, int x, int y,
static void draw_empty_stack( int s, int x, int y, bool cursor )
{
rb->lcd_bitmap_part( solitaire_suitsi, 0,
CARD_GFX_HEIGHT * s,
CARD_GFX_HEIGHT * s,
STRIDE( SCREEN_MAIN,
BMPWIDTH_solitaire_suitsi, BMPHEIGHT_solitaire_suitsi),
x+1, y+1, CARD_GFX_WIDTH, CARD_GFX_HEIGHT );
@ -1618,11 +1599,11 @@ static int save_game( void )
static int load_game( void )
{
int checksum, retval;
int fd = open_save_file( O_RDONLY );
if( fd < 0 )
return -1;
retval = 0; /* Assume good case */
if( ( rb->lseek( fd, -(off_t)sizeof( int ), SEEK_END ) == -((ssize_t)sizeof( int ))-1 )
|| ( rb->read( fd, &checksum, sizeof( int ) ) < ((ssize_t)sizeof( int )) )
@ -1646,7 +1627,7 @@ static int load_game( void )
rb->splash( 2*HZ, "Save file was corrupted. Aborting." );
retval = -3;
}
rb->close( fd );
delete_save_file();
return retval;

View file

@ -327,25 +327,7 @@
#define AST_RIGHT BUTTON_RIGHT
#define AST_FIRE BUTTON_SELECT
#elif (CONFIG_KEYPAD == XDUOO_X3_PAD)
#define AST_PAUSE BUTTON_VOL_UP
#define AST_QUIT BUTTON_POWER
#define AST_THRUST BUTTON_HOME
#define AST_HYPERSPACE BUTTON_OPTION
#define AST_LEFT BUTTON_PREV
#define AST_RIGHT BUTTON_NEXT
#define AST_FIRE BUTTON_PLAY
#elif (CONFIG_KEYPAD == XDUOO_X3II_PAD)
#define AST_PAUSE BUTTON_VOL_UP
#define AST_QUIT BUTTON_POWER
#define AST_THRUST BUTTON_HOME
#define AST_HYPERSPACE BUTTON_OPTION
#define AST_LEFT BUTTON_PREV
#define AST_RIGHT BUTTON_NEXT
#define AST_FIRE BUTTON_PLAY
#elif (CONFIG_KEYPAD == XDUOO_X20_PAD)
#elif (CONFIG_KEYPAD == XDUOO_X3_PAD) || (CONFIG_KEYPAD == XDUOO_X3II_PAD) || (CONFIG_KEYPAD == XDUOO_X20_PAD)
#define AST_PAUSE BUTTON_VOL_UP
#define AST_QUIT BUTTON_POWER
#define AST_THRUST BUTTON_HOME
@ -363,7 +345,7 @@
#define AST_RIGHT BUTTON_NEXT
#define AST_FIRE BUTTON_PLAY
#elif (CONFIG_KEYPAD == IHIFI_770_PAD)
#elif (CONFIG_KEYPAD == IHIFI_770_PAD) || (CONFIG_KEYPAD == IHIFI_800_PAD)
#define AST_PAUSE BUTTON_PLAY
#define AST_QUIT BUTTON_POWER
#define AST_THRUST BUTTON_NEXT
@ -372,14 +354,14 @@
#define AST_RIGHT BUTTON_VOL_DOWN
#define AST_FIRE BUTTON_VOL_UP
#elif (CONFIG_KEYPAD == IHIFI_800_PAD)
#define AST_PAUSE BUTTON_PLAY
#elif (CONFIG_KEYPAD == EROSQ_PAD)
#define AST_PAUSE BUTTON_PREV
#define AST_QUIT BUTTON_POWER
#define AST_THRUST BUTTON_NEXT
#define AST_HYPERSPACE BUTTON_PREV
#define AST_LEFT BUTTON_HOME
#define AST_RIGHT BUTTON_VOL_DOWN
#define AST_FIRE BUTTON_VOL_UP
#define AST_THRUST BUTTON_PLAY
#define AST_HYPERSPACE BUTTON_MENU
#define AST_LEFT BUTTON_SCROLL_BACK
#define AST_RIGHT BUTTON_SCROLL_FWD
#define AST_FIRE BUTTON_BACK
#else
#error No keymap defined!

View file

@ -588,23 +588,7 @@
#define STAR_LEVEL_DOWN_NAME "PLAY + PREV"
#define STAR_LEVEL_REPEAT_NAME "PLAY + OPTION"
#elif CONFIG_KEYPAD == XDUOO_X3II_PAD
#define STAR_QUIT BUTTON_POWER
#define STAR_LEFT BUTTON_PREV
#define STAR_RIGHT BUTTON_NEXT
#define STAR_UP BUTTON_HOME
#define STAR_DOWN BUTTON_OPTION
#define STAR_TOGGLE_CONTROL BUTTON_PLAY
#define STAR_LEVEL_UP (BUTTON_PLAY | BUTTON_NEXT)
#define STAR_LEVEL_DOWN (BUTTON_PLAY | BUTTON_PREV)
#define STAR_LEVEL_REPEAT (BUTTON_PLAY | BUTTON_OPTION)
#define STAR_TOGGLE_CONTROL_NAME "PLAY"
#define STAR_QUIT_NAME "POWER"
#define STAR_LEVEL_UP_NAME "PLAY + NEXT"
#define STAR_LEVEL_DOWN_NAME "PLAY + PREV"
#define STAR_LEVEL_REPEAT_NAME "PLAY + OPTION"
#elif CONFIG_KEYPAD == XDUOO_X20_PAD
#elif CONFIG_KEYPAD == XDUOO_X3II_PAD || CONFIG_KEYPAD == XDUOO_X20_PAD
#define STAR_QUIT BUTTON_POWER
#define STAR_LEFT BUTTON_PREV
#define STAR_RIGHT BUTTON_NEXT
@ -636,7 +620,7 @@
#define STAR_LEVEL_DOWN_NAME "PLAY + PREV"
#define STAR_LEVEL_REPEAT_NAME "PLAY + OPTION"
#elif CONFIG_KEYPAD == IHIFI_770_PAD
#elif CONFIG_KEYPAD == IHIFI_770_PAD || CONFIG_KEYPAD == IHIFI_800_PAD
#define STAR_QUIT BUTTON_POWER
#define STAR_LEFT BUTTON_HOME
#define STAR_RIGHT BUTTON_VOL_DOWN
@ -652,21 +636,21 @@
#define STAR_LEVEL_DOWN_NAME "POWER + VOL-"
#define STAR_LEVEL_REPEAT_NAME "POWER + HOME"
#elif CONFIG_KEYPAD == IHIFI_800_PAD
#elif CONFIG_KEYPAD == EROSQ_PAD
#define STAR_QUIT BUTTON_POWER
#define STAR_LEFT BUTTON_HOME
#define STAR_RIGHT BUTTON_VOL_DOWN
#define STAR_LEFT BUTTON_SCROLL_BACK
#define STAR_RIGHT BUTTON_SCROLL_FWD
#define STAR_UP BUTTON_PREV
#define STAR_DOWN BUTTON_NEXT
#define STAR_TOGGLE_CONTROL BUTTON_PLAY
#define STAR_LEVEL_UP (BUTTON_POWER | BUTTON_VOL_UP)
#define STAR_LEVEL_DOWN (BUTTON_POWER | BUTTON_VOL_DOWN)
#define STAR_LEVEL_REPEAT (BUTTON_POWER | BUTTON_HOME)
#define STAR_LEVEL_UP BUTTON_VOL_UP
#define STAR_LEVEL_DOWN BUTTON_VOL_DOWN
#define STAR_LEVEL_REPEAT BUTTON_BACK
#define STAR_TOGGLE_CONTROL_NAME "PLAY"
#define STAR_QUIT_NAME "POWER"
#define STAR_LEVEL_UP_NAME "POWER + VOL+"
#define STAR_LEVEL_DOWN_NAME "POWER + VOL-"
#define STAR_LEVEL_REPEAT_NAME "POWER + HOME"
#define STAR_LEVEL_UP_NAME "VOL UP"
#define STAR_LEVEL_DOWN_NAME "VOL DN"
#define STAR_LEVEL_REPEAT_NAME "BACK"
#else
#error No keymap defined!
@ -1035,8 +1019,8 @@ static void star_display_board_info(int current_level)
label_pos_y, "C:");
rb->lcd_bitmap_part(star_tiles, 0, control == STAR_CONTROL_BALL ?
BALL*TILE_HEIGHT : BLOCK*TILE_HEIGHT,
STRIDE( SCREEN_MAIN,
BALL*TILE_HEIGHT : BLOCK*TILE_HEIGHT,
STRIDE( SCREEN_MAIN,
BMPWIDTH_star_tiles, BMPHEIGHT_star_tiles),
STAR_OFFSET_X + (STAR_WIDTH-1) * TILE_WIDTH,
tile_pos_y, TILE_WIDTH, TILE_HEIGHT);
@ -1082,7 +1066,7 @@ static int star_load_level(int current_level)
STAR_OFFSET_X + x * TILE_WIDTH, \
STAR_OFFSET_Y + y * TILE_HEIGHT, \
TILE_WIDTH, TILE_HEIGHT);
case STAR_VOID:
DRAW_TILE( SPACE );
break;
@ -1128,12 +1112,12 @@ static void star_animate_tile(int tile_no, int start_x, int start_y,
for (i = 1 ; i <= TILE_WIDTH ; i++)
{
STAR_SLEEP
rb->lcd_bitmap_part(star_tiles, 0, SPACE * TILE_HEIGHT,
STRIDE( SCREEN_MAIN,
rb->lcd_bitmap_part(star_tiles, 0, SPACE * TILE_HEIGHT,
STRIDE( SCREEN_MAIN,
BMPWIDTH_star_tiles, BMPHEIGHT_star_tiles),
start_x, start_y, TILE_WIDTH, TILE_HEIGHT);
rb->lcd_bitmap_part(star_tiles, 0, tile_no * TILE_HEIGHT,
STRIDE( SCREEN_MAIN,
STRIDE( SCREEN_MAIN,
BMPWIDTH_star_tiles, BMPHEIGHT_star_tiles),
start_x + delta_x * i, start_y, TILE_WIDTH, TILE_HEIGHT);
rb->lcd_update_rect(start_x + delta_x * i - (delta_x>0?1:0),
@ -1145,12 +1129,12 @@ static void star_animate_tile(int tile_no, int start_x, int start_y,
for (i = 1 ; i <= TILE_HEIGHT ; i++)
{
STAR_SLEEP
rb->lcd_bitmap_part(star_tiles, 0, SPACE * TILE_HEIGHT,
STRIDE( SCREEN_MAIN,
rb->lcd_bitmap_part(star_tiles, 0, SPACE * TILE_HEIGHT,
STRIDE( SCREEN_MAIN,
BMPWIDTH_star_tiles, BMPHEIGHT_star_tiles),
start_x, start_y, TILE_WIDTH, TILE_HEIGHT);
rb->lcd_bitmap_part(star_tiles, 0, tile_no * TILE_HEIGHT,
STRIDE( SCREEN_MAIN,
rb->lcd_bitmap_part(star_tiles, 0, tile_no * TILE_HEIGHT,
STRIDE( SCREEN_MAIN,
BMPWIDTH_star_tiles, BMPHEIGHT_star_tiles),
start_x, start_y + delta_y * i, TILE_WIDTH, TILE_HEIGHT);
rb->lcd_update_rect(start_x, start_y + delta_y * i - (delta_y>0?1:0),
@ -1169,7 +1153,7 @@ static int star_run_game(int current_level)
int key;
#if defined(STAR_LEVEL_DOWN_PRE) || \
defined(STAR_LEVEL_UP_PRE) || \
defined(STAR_TOGGLE_CONTROL_PRE)
defined(STAR_TOGGLE_CONTROL_PRE)
int lastkey = BUTTON_NONE;
#endif
@ -1261,7 +1245,7 @@ static int star_run_game(int current_level)
}
#if defined(STAR_LEVEL_DOWN_PRE) || \
defined(STAR_LEVEL_UP_PRE) || \
defined(STAR_TOGGLE_CONTROL_PRE)
defined(STAR_TOGGLE_CONTROL_PRE)
if (key != BUTTON_NONE)
lastkey = key;
#endif

View file

@ -277,23 +277,7 @@
#define STOPWATCH_SCROLL_UP BUTTON_UP
#define STOPWATCH_SCROLL_DOWN BUTTON_DOWN
#elif CONFIG_KEYPAD == XDUOO_X3_PAD
#define STOPWATCH_QUIT BUTTON_POWER
#define STOPWATCH_START_STOP BUTTON_NEXT
#define STOPWATCH_RESET_TIMER BUTTON_PREV
#define STOPWATCH_LAP_TIMER BUTTON_PLAY
#define STOPWATCH_SCROLL_UP BUTTON_HOME
#define STOPWATCH_SCROLL_DOWN BUTTON_OPTION
#elif CONFIG_KEYPAD == XDUOO_X3II_PAD
#define STOPWATCH_QUIT BUTTON_POWER
#define STOPWATCH_START_STOP BUTTON_NEXT
#define STOPWATCH_RESET_TIMER BUTTON_PREV
#define STOPWATCH_LAP_TIMER BUTTON_PLAY
#define STOPWATCH_SCROLL_UP BUTTON_HOME
#define STOPWATCH_SCROLL_DOWN BUTTON_OPTION
#elif CONFIG_KEYPAD == XDUOO_X20_PAD
#elif CONFIG_KEYPAD == XDUOO_X3_PAD || CONFIG_KEYPAD == XDUOO_X3II_PAD || CONFIG_KEYPAD == XDUOO_X20_PAD
#define STOPWATCH_QUIT BUTTON_POWER
#define STOPWATCH_START_STOP BUTTON_NEXT
#define STOPWATCH_RESET_TIMER BUTTON_PREV
@ -309,7 +293,7 @@
#define STOPWATCH_SCROLL_UP BUTTON_HOME
#define STOPWATCH_SCROLL_DOWN BUTTON_OPTION
#elif CONFIG_KEYPAD == IHIFI_770_PAD
#elif CONFIG_KEYPAD == IHIFI_770_PAD || CONFIG_KEYPAD == IHIFI_800_PAD
#define STOPWATCH_QUIT BUTTON_POWER
#define STOPWATCH_START_STOP BUTTON_NEXT
#define STOPWATCH_RESET_TIMER BUTTON_PREV
@ -317,13 +301,13 @@
#define STOPWATCH_SCROLL_UP BUTTON_VOL_UP
#define STOPWATCH_SCROLL_DOWN BUTTON_VOL_DOWN
#elif CONFIG_KEYPAD == IHIFI_800_PAD
#elif CONFIG_KEYPAD == EROSQ_PAD
#define STOPWATCH_QUIT BUTTON_POWER
#define STOPWATCH_START_STOP BUTTON_NEXT
#define STOPWATCH_RESET_TIMER BUTTON_PREV
#define STOPWATCH_LAP_TIMER BUTTON_PLAY
#define STOPWATCH_SCROLL_UP BUTTON_VOL_UP
#define STOPWATCH_SCROLL_DOWN BUTTON_VOL_DOWN
#define STOPWATCH_START_STOP BUTTON_PLAY
#define STOPWATCH_RESET_TIMER BUTTON_BACK
#define STOPWATCH_LAP_TIMER BUTTON_MENU
#define STOPWATCH_SCROLL_UP BUTTON_SCROLL_FWD
#define STOPWATCH_SCROLL_DOWN BUTTON_SCROLL_BACK
#else
#error No keymap defined!
@ -405,24 +389,24 @@ static void ticks_to_string(int ticks,int lap,int buflen, char * buf)
}
}
/*
/*
* Load saved stopwatch state, if exists.
*/
static void load_stopwatch(void)
{
int fd;
fd = rb->open(STOPWATCH_FILE, O_RDONLY);
if (fd < 0)
{
return;
}
/* variable stopwatch isn't saved/loaded, because it is only used
* temporarily in main loop
*/
rb->read(fd, &start_at, sizeof(start_at));
rb->read(fd, &prev_total, sizeof(prev_total));
rb->read(fd, &counting, sizeof(counting));
@ -430,7 +414,7 @@ static void load_stopwatch(void)
rb->read(fd, &lap_scroll, sizeof(lap_scroll));
rb->read(fd, &lap_start, sizeof(lap_start));
rb->read(fd, lap_times, sizeof(lap_times));
if (counting && start_at > *rb->current_tick)
{
/* Stopwatch started in the future? Unlikely; probably started on a
@ -441,28 +425,28 @@ static void load_stopwatch(void)
start_at = 0;
counting = false;
}
rb->close(fd);
}
/*
/*
* Save stopwatch state.
*/
static void save_stopwatch(void)
{
int fd;
fd = rb->open(STOPWATCH_FILE, O_CREAT|O_WRONLY|O_TRUNC, 0666);
if (fd < 0)
{
return;
}
/* variable stopwatch isn't saved/loaded, because it is only used
* temporarily in main loop
*/
rb->write(fd, &start_at, sizeof(start_at));
rb->write(fd, &prev_total, sizeof(prev_total));
rb->write(fd, &counting, sizeof(counting));
@ -470,7 +454,7 @@ static void save_stopwatch(void)
rb->write(fd, &lap_scroll, sizeof(lap_scroll));
rb->write(fd, &lap_start, sizeof(lap_start));
rb->write(fd, lap_times, sizeof(lap_times));
rb->close(fd);
}
@ -491,9 +475,9 @@ enum plugin_status plugin_start(const void* parameter)
lines = (LCD_HEIGHT / h) - (LAP_Y);
load_stopwatch();
rb->lcd_clear_display();
while (!done)
{
if (counting)

View file

@ -404,21 +404,7 @@
#define SUDOKU_BUTTON_MENU (BUTTON_POWER | BUTTON_REL)
#define SUDOKU_BUTTON_POSSIBLE (BUTTON_HOME | BUTTON_PWRALT)
#elif CONFIG_KEYPAD == XDUOO_X3II_PAD
#define SUDOKU_BUTTON_QUIT_PRE BUTTON_POWER
#define SUDOKU_BUTTON_QUIT (BUTTON_POWER | BUTTON_REPEAT)
#define SUDOKU_BUTTON_UP BUTTON_HOME
#define SUDOKU_BUTTON_DOWN BUTTON_OPTION
#define SUDOKU_BUTTON_LEFT BUTTON_PREV
#define SUDOKU_BUTTON_RIGHT BUTTON_NEXT
#define SUDOKU_BUTTON_TOGGLEBACK BUTTON_VOL_DOWN
#define SUDOKU_BUTTON_TOGGLE BUTTON_VOL_UP
#define SUDOKU_BUTTON_ALTTOGGLE BUTTON_PLAY
#define SUDOKU_BUTTON_MENU_PRE BUTTON_POWER
#define SUDOKU_BUTTON_MENU (BUTTON_POWER | BUTTON_REL)
#define SUDOKU_BUTTON_POSSIBLE (BUTTON_HOME | BUTTON_POWER)
#elif CONFIG_KEYPAD == XDUOO_X20_PAD
#elif CONFIG_KEYPAD == XDUOO_X3II_PAD || CONFIG_KEYPAD == XDUOO_X20_PAD
#define SUDOKU_BUTTON_QUIT_PRE BUTTON_POWER
#define SUDOKU_BUTTON_QUIT (BUTTON_POWER | BUTTON_REPEAT)
#define SUDOKU_BUTTON_UP BUTTON_HOME
@ -446,7 +432,7 @@
#define SUDOKU_BUTTON_MENU (BUTTON_POWER | BUTTON_REL)
#define SUDOKU_BUTTON_POSSIBLE (BUTTON_HOME | BUTTON_POWER)
#elif CONFIG_KEYPAD == IHIFI_770_PAD
#elif CONFIG_KEYPAD == IHIFI_770_PAD || CONFIG_KEYPAD == IHIFI_800_PAD
#define SUDOKU_BUTTON_QUIT_PRE BUTTON_POWER
#define SUDOKU_BUTTON_QUIT (BUTTON_POWER | BUTTON_REPEAT)
#define SUDOKU_BUTTON_UP BUTTON_PREV
@ -460,19 +446,18 @@
#define SUDOKU_BUTTON_MENU (BUTTON_POWER | BUTTON_REL)
#define SUDOKU_BUTTON_POSSIBLE (BUTTON_POWER | BUTTON_HOME)
#elif CONFIG_KEYPAD == IHIFI_800_PAD
#elif CONFIG_KEYPAD == EROSQ_PAD
#define SUDOKU_BUTTON_QUIT_PRE BUTTON_POWER
#define SUDOKU_BUTTON_QUIT (BUTTON_POWER | BUTTON_REPEAT)
#define SUDOKU_BUTTON_UP BUTTON_PREV
#define SUDOKU_BUTTON_DOWN BUTTON_NEXT
#define SUDOKU_BUTTON_LEFT BUTTON_HOME
#define SUDOKU_BUTTON_RIGHT BUTTON_VOL_DOWN
#define SUDOKU_BUTTON_TOGGLEBACK (BUTTON_POWER | BUTTON_VOL_DOWN)
#define SUDOKU_BUTTON_TOGGLE (BUTTON_POWER | BUTTON_VOL_UP)
#define SUDOKU_BUTTON_ALTTOGGLE BUTTON_PLAY
#define SUDOKU_BUTTON_MENU_PRE BUTTON_POWER
#define SUDOKU_BUTTON_MENU (BUTTON_POWER | BUTTON_REL)
#define SUDOKU_BUTTON_POSSIBLE (BUTTON_POWER | BUTTON_HOME)
#define SUDOKU_BUTTON_LEFT BUTTON_SCROLL_BACK
#define SUDOKU_BUTTON_RIGHT BUTTON_SCROLL_FWD
#define SUDOKU_BUTTON_TOGGLEBACK BUTTON_VOL_DOWN
#define SUDOKU_BUTTON_TOGGLE BUTTON_VOL_UP
#define SUDOKU_BUTTON_MENU_PRE BUTTON_MENU
#define SUDOKU_BUTTON_MENU (BUTTON_MENU | BUTTON_REL)
#define SUDOKU_BUTTON_POSSIBLE BUTTON_BACK
#else
#error No keymap defined!
@ -512,7 +497,7 @@ struct sudoku_state_t {
char savedboard[9][9]; /* Cached copy of saved state */
int x,y; /* Cursor position */
int editmode; /* We are editing the start board */
#ifdef SUDOKU_BUTTON_POSSIBLE
#ifdef SUDOKU_BUTTON_POSSIBLE
short possiblevals[9][9]; /* possible values a cell could be, user sets them */
short savedpossible[9][9]; /* cached copy of possible cell values */
#endif

View file

@ -545,6 +545,18 @@
#define TV_LINE_DOWN BUTTON_OPTION
#define TV_BOOKMARK (BUTTON_OPTION | BUTTON_PLAY)
#elif CONFIG_KEYPAD == EROSQ_PAD
#define TV_MENU BUTTON_MENU
#define TV_SCROLL_UP BUTTON_SCROLL_BACK
#define TV_SCROLL_DOWN BUTTON_SCROLL_FWD
#define TV_SCREEN_LEFT BUTTON_PREV
#define TV_SCREEN_RIGHT BUTTON_NEXT
#define TV_AUTOSCROLL BUTTON_PLAY
#define TV_QUIT BUTTON_POWER
#define TV_BOOKMARK BUTTON_BACK
#define TV_LINE_UP BUTTON_VOL_UP
#define TV_LINE_DOWN BUTTON_VOL_DOWN
/* Xuelin 770/770c keys */
#elif CONFIG_KEYPAD == IHIFI_770_PAD
#define TV_QUIT BUTTON_POWER

View file

@ -397,18 +397,7 @@
#define LABEL_MENU "PLAY"
#define LABEL_VOLUME "VOL UP/DN"
#elif (CONFIG_KEYPAD == XDUOO_X3II_PAD)
#define VUMETER_QUIT BUTTON_POWER
#define VUMETER_HELP BUTTON_HOME
#define VUMETER_MENU BUTTON_PLAY
#define VUMETER_UP BUTTON_VOL_UP
#define VUMETER_DOWN BUTTON_VOL_DOWN
#define LABEL_HELP "HOME"
#define LABEL_QUIT "POWER"
#define LABEL_MENU "PLAY"
#define LABEL_VOLUME "VOL UP/DN"
#elif (CONFIG_KEYPAD == XDUOO_X20_PAD)
#elif (CONFIG_KEYPAD == XDUOO_X3II_PAD) || (CONFIG_KEYPAD == XDUOO_X20_PAD)
#define VUMETER_QUIT BUTTON_POWER
#define VUMETER_HELP BUTTON_HOME
#define VUMETER_MENU BUTTON_PLAY
@ -430,7 +419,7 @@
#define LABEL_MENU "PLAY"
#define LABEL_VOLUME "VOL UP/DN"
#elif (CONFIG_KEYPAD == IHIFI_770_PAD)
#elif (CONFIG_KEYPAD == IHIFI_770_PAD) || (CONFIG_KEYPAD == IHIFI_800_PAD)
#define VUMETER_QUIT BUTTON_POWER
#define VUMETER_HELP BUTTON_HOME
#define VUMETER_MENU BUTTON_PLAY
@ -441,15 +430,15 @@
#define LABEL_MENU "PLAY"
#define LABEL_VOLUME "VOL UP/DN"
#elif (CONFIG_KEYPAD == IHIFI_800_PAD)
#elif (CONFIG_KEYPAD == EROSQ_PAD)
#define VUMETER_QUIT BUTTON_POWER
#define VUMETER_HELP BUTTON_HOME
#define VUMETER_MENU BUTTON_PLAY
#define VUMETER_HELP BUTTON_BACK
#define VUMETER_MENU BUTTON_MENU
#define VUMETER_UP BUTTON_VOL_UP
#define VUMETER_DOWN BUTTON_VOL_DOWN
#define LABEL_HELP "HOME"
#define LABEL_HELP "BACK"
#define LABEL_QUIT "POWER"
#define LABEL_MENU "PLAY"
#define LABEL_MENU "MENU"
#define LABEL_VOLUME "VOL UP/DN"
#else
@ -551,7 +540,7 @@ struct saved_settings {
bool analog_minimeters;
bool digital_minimeters;
int analog_decay;
int digital_decay;
int digital_decay;
} vumeter_settings;
static void reset_settings(void) {
@ -561,7 +550,7 @@ static void reset_settings(void) {
vumeter_settings.analog_minimeters=true;
vumeter_settings.digital_minimeters=false;
vumeter_settings.analog_decay=3;
vumeter_settings.digital_decay=0;
vumeter_settings.digital_decay=0;
}
static void calc_scales(void)
@ -639,11 +628,11 @@ static bool vu_meter_menu(void)
int selection;
bool menu_quit = false;
bool exit = false;
MENUITEM_STRINGLIST(menu,"VU Meter Menu",NULL,"Meter Type","Scale",
"Minimeters","Decay Speed","Playback Control",
"Quit");
static const struct opt_items meter_type_option[2] = {
{ "Analog", -1 },
{ "Digital", -1 },
@ -666,7 +655,7 @@ static bool vu_meter_menu(void)
rb->set_option("Meter Type", &vumeter_settings.meter_type, INT,
meter_type_option, 2, NULL);
break;
case 1:
if(vumeter_settings.meter_type==ANALOG)
{
@ -679,7 +668,7 @@ static bool vu_meter_menu(void)
"dBfs", -1, "Linear", -1, NULL);
}
break;
case 2:
if(vumeter_settings.meter_type==ANALOG)
{
@ -692,16 +681,16 @@ static bool vu_meter_menu(void)
&vumeter_settings.digital_minimeters);
}
break;
case 3:
if(vumeter_settings.meter_type==ANALOG)
{
rb->set_option("Decay Speed", &vumeter_settings.analog_decay, INT,
rb->set_option("Decay Speed", &vumeter_settings.analog_decay, INT,
decay_speed_option, 7, NULL);
}
else
{
rb->set_option("Decay Speed", &vumeter_settings.digital_decay, INT,
rb->set_option("Decay Speed", &vumeter_settings.digital_decay, INT,
decay_speed_option, 7, NULL);
}
break;
@ -779,7 +768,7 @@ static void draw_digital_minimeters(void) {
if(8<(num_right_leds))
rb->lcd_mono_bitmap(sound_max_level, 46, half_height+8, 3, 8);
rb->lcd_set_drawmode(DRMODE_SOLID);
#ifdef HAVE_LCD_COLOR
rb->lcd_set_foreground(screen_foreground);
#endif
@ -880,10 +869,10 @@ static void digital_meter(void) {
rb->lcd_set_foreground(LCD_RGBPACK(255, 255 - 23 * i, 0));
#endif
rb->lcd_fillrect((digital_lead + (i*digital_block_width)),
(half_height + 20), digital_block_width - digital_block_gap,
(half_height + 20), digital_block_width - digital_block_gap,
digital_block_height);
}
#ifdef HAVE_LCD_COLOR
rb->lcd_set_foreground(screen_foreground);
#endif

View file

@ -362,16 +362,7 @@ CONFIG_KEYPAD == MROBE500_PAD
#define BTN_QUIT BUTTON_POWER
#define BTN_STOPRESET (BUTTON_HOME | BUTTON_PWRALT)
#elif CONFIG_KEYPAD == XDUOO_X3II_PAD
#define BTN_DIR_UP BUTTON_HOME
#define BTN_DIR_DOWN BUTTON_OPTION
#define BTN_DIR_LEFT BUTTON_PREV
#define BTN_DIR_RIGHT BUTTON_NEXT
#define BTN_STARTPAUSE BUTTON_PLAY
#define BTN_QUIT BUTTON_POWER
#define BTN_STOPRESET (BUTTON_HOME | BUTTON_POWER)
#elif CONFIG_KEYPAD == XDUOO_X20_PAD
#elif CONFIG_KEYPAD == XDUOO_X3II_PAD || CONFIG_KEYPAD == XDUOO_X20_PAD
#define BTN_DIR_UP BUTTON_HOME
#define BTN_DIR_DOWN BUTTON_OPTION
#define BTN_DIR_LEFT BUTTON_PREV
@ -389,7 +380,7 @@ CONFIG_KEYPAD == MROBE500_PAD
#define BTN_QUIT BUTTON_POWER
#define BTN_STOPRESET (BUTTON_HOME | BUTTON_POWER)
#elif CONFIG_KEYPAD == IHIFI_770_PAD
#elif CONFIG_KEYPAD == IHIFI_770_PAD || CONFIG_KEYPAD == IHIFI_800_PAD
#define BTN_DIR_UP BUTTON_PREV
#define BTN_DIR_DOWN BUTTON_NEXT
#define BTN_DIR_LEFT BUTTON_HOME
@ -398,14 +389,14 @@ CONFIG_KEYPAD == MROBE500_PAD
#define BTN_QUIT BUTTON_POWER
#define BTN_STOPRESET BUTTON_VOL_UP
#elif CONFIG_KEYPAD == IHIFI_800_PAD
#elif CONFIG_KEYPAD == EROSQ_PAD
#define BTN_DIR_UP BUTTON_PREV
#define BTN_DIR_DOWN BUTTON_NEXT
#define BTN_DIR_LEFT BUTTON_HOME
#define BTN_DIR_RIGHT BUTTON_VOL_DOWN
#define BTN_DIR_LEFT BUTTON_SCROLL_BACK
#define BTN_DIR_RIGHT BUTTON_SCROLL_FWD
#define BTN_STARTPAUSE BUTTON_PLAY
#define BTN_QUIT BUTTON_POWER
#define BTN_STOPRESET BUTTON_VOL_UP
#define BTN_STOPRESET BUTTON_BACK
#else
#error No keymap defined!

View file

@ -315,25 +315,7 @@ CONFIG_KEYPAD == MROBE500_PAD
#define DOWN BUTTON_DOWN
#define PAUSE BUTTON_SELECT
#elif CONFIG_KEYPAD == XDUOO_X3_PAD
#define QUIT BUTTON_POWER
#define LEFT BUTTON_PREV
#define RIGHT BUTTON_NEXT
#define UP BUTTON_HOME
#define DOWN BUTTON_OPTION
#define PAUSE BUTTON_PLAY
#elif CONFIG_KEYPAD == XDUOO_X3II_PAD
#define QUIT BUTTON_POWER
#define LEFT BUTTON_PREV
#define RIGHT BUTTON_NEXT
#define UP BUTTON_HOME
#define DOWN BUTTON_OPTION
#define PAUSE BUTTON_PLAY
#elif CONFIG_KEYPAD == XDUOO_X20_PAD
#elif CONFIG_KEYPAD == XDUOO_X3_PAD || CONFIG_KEYPAD == XDUOO_X3II_PAD || CONFIG_KEYPAD == XDUOO_X20_PAD
#define QUIT BUTTON_POWER
#define LEFT BUTTON_PREV
@ -351,7 +333,7 @@ CONFIG_KEYPAD == MROBE500_PAD
#define DOWN BUTTON_OPTION
#define PAUSE BUTTON_PLAY
#elif CONFIG_KEYPAD == IHIFI_770_PAD
#elif CONFIG_KEYPAD == IHIFI_770_PAD || CONFIG_KEYPAD == IHIFI_800_PAD
#define QUIT BUTTON_POWER
#define LEFT BUTTON_HOME
@ -360,20 +342,16 @@ CONFIG_KEYPAD == MROBE500_PAD
#define DOWN BUTTON_NEXT
#define PAUSE BUTTON_PLAY
#elif CONFIG_KEYPAD == IHIFI_800_PAD
#elif CONFIG_KEYPAD == EROSQ_PAD
#define QUIT BUTTON_POWER
#define LEFT BUTTON_HOME
#define RIGHT BUTTON_VOL_DOWN
#define LEFT BUTTON_SCROLL_BACK
#define RIGHT BUTTON_SCROLL_FWD
#define UP BUTTON_PREV
#define DOWN BUTTON_NEXT
#define PAUSE BUTTON_PLAY
#else
#error No keymap defined!
#endif
#ifdef HAVE_TOUCHSCREEN
#elif defined(HAVE_TOUCHSCREEN)
#ifndef QUIT
#define QUIT BUTTON_TOPLEFT
#endif
@ -392,6 +370,8 @@ CONFIG_KEYPAD == MROBE500_PAD
#ifndef PAUSE
#define PAUSE BUTTON_CENTER
#endif
#else
#error No keymap defined!
#endif
#define MOVE_NO 0 /* player movement */
@ -734,7 +714,7 @@ static void refresh_board (void)
#else
x = BOARD_X + CUBE_SIZE * BOARD_W - 40;
#endif
rb->lcd_putsxyf (x, BOARD_Y + CUBE_SIZE * BOARD_H - 8,
rb->lcd_putsxyf (x, BOARD_Y + CUBE_SIZE * BOARD_H - 8,
(player.lives != 1) ? "%d Lives" : "%d Life", player.lives);
#if LCD_DEPTH>=2
@ -1160,7 +1140,7 @@ static int xobox_menu_cb(int action,
static int xobox_menu(bool ingame)
{
rb->button_clear_queue();
int selection = 0;
MENUITEM_STRINGLIST(main_menu, "Xobox Menu", xobox_menu_cb,
"Resume Game", "Start New Game",

View file

@ -266,15 +266,7 @@
#define ZX_UP BUTTON_HOME
#define ZX_DOWN BUTTON_OPTION
#elif CONFIG_KEYPAD == XDUOO_X3II_PAD
#define ZX_SELECT BUTTON_PLAY
#define ZX_MENU BUTTON_POWER
#define ZX_LEFT BUTTON_PREV
#define ZX_RIGHT BUTTON_NEXT
#define ZX_UP BUTTON_HOME
#define ZX_DOWN BUTTON_OPTION
#elif CONFIG_KEYPAD == XDUOO_X20_PAD
#elif CONFIG_KEYPAD == XDUOO_X3II_PAD || CONFIG_KEYPAD == XDUOO_X20_PAD
#define ZX_SELECT BUTTON_PLAY
#define ZX_MENU BUTTON_POWER
#define ZX_LEFT BUTTON_PREV
@ -290,7 +282,7 @@
#define ZX_UP BUTTON_HOME
#define ZX_DOWN BUTTON_OPTION
#elif CONFIG_KEYPAD == IHIFI_770_PAD
#elif CONFIG_KEYPAD == IHIFI_770_PAD || CONFIG_KEYPAD == IHIFI_800_PAD
#define ZX_SELECT BUTTON_PLAY
#define ZX_MENU BUTTON_POWER
#define ZX_LEFT BUTTON_HOME
@ -298,11 +290,11 @@
#define ZX_UP BUTTON_PREV
#define ZX_DOWN BUTTON_NEXT
#elif CONFIG_KEYPAD == IHIFI_800_PAD
#elif CONFIG_KEYPAD == EROSQ_PAD
#define ZX_SELECT BUTTON_PLAY
#define ZX_MENU BUTTON_POWER
#define ZX_LEFT BUTTON_HOME
#define ZX_RIGHT BUTTON_VOL_DOWN
#define ZX_MENU BUTTON_MENU
#define ZX_LEFT BUTTON_SCROLL_BACK
#define ZX_RIGHT BUTTON_SCROLL_FWD
#define ZX_UP BUTTON_PREV
#define ZX_DOWN BUTTON_NEXT

View file

@ -36,7 +36,7 @@
/* TODO: Check keyboard mappings */
#define KBD_SELECT BUTTON_SELECT
#define KBD_SELECT BUTTON_SELECT
#define KBD_ABORT BUTTON_PLAY
#define KBD_LEFT BUTTON_LEFT
#define KBD_RIGHT BUTTON_RIGHT
@ -257,16 +257,7 @@
#define KBD_UP BUTTON_HOME
#define KBD_DOWN BUTTON_OPTION
#elif CONFIG_KEYPAD == XDUOO_X3II_PAD
#define KBD_SELECT BUTTON_PLAY
#define KBD_ABORT BUTTON_POWER
#define KBD_LEFT BUTTON_PREV
#define KBD_RIGHT BUTTON_NEXT
#define KBD_UP BUTTON_HOME
#define KBD_DOWN BUTTON_OPTION
#elif CONFIG_KEYPAD == XDUOO_X20_PAD
#elif CONFIG_KEYPAD == XDUOO_X3II_PAD || CONFIG_KEYPAD == XDUOO_X20_PAD
#define KBD_SELECT BUTTON_PLAY
#define KBD_ABORT BUTTON_POWER
@ -284,7 +275,7 @@
#define KBD_UP BUTTON_HOME
#define KBD_DOWN BUTTON_OPTION
#elif CONFIG_KEYPAD == IHIFI_770_PAD
#elif CONFIG_KEYPAD == IHIFI_770_PAD || CONFIG_KEYPAD == IHIFI_800_PAD
#define KBD_SELECT BUTTON_PLAY
#define KBD_ABORT BUTTON_POWER
@ -293,12 +284,12 @@
#define KBD_UP BUTTON_PREV
#define KBD_DOWN BUTTON_NEXT
#elif CONFIG_KEYPAD == IHIFI_800_PAD
#elif CONFIG_KEYPAD == EROSQ_PAD
#define KBD_SELECT BUTTON_PLAY
#define KBD_ABORT BUTTON_POWER
#define KBD_LEFT BUTTON_HOME
#define KBD_RIGHT BUTTON_VOL_DOWN
#define KBD_ABORT BUTTON_BACK
#define KBD_LEFT BUTTON_SCROLL_BACK
#define KBD_RIGHT BUTTON_SCROLL_FWD
#define KBD_UP BUTTON_PREV
#define KBD_DOWN BUTTON_NEXT
@ -581,7 +572,7 @@ int zx_kbd_input(char* text/*, int buflen*/)
}
cur_blink = !cur_blink;
/* highlight the key that has focus */
FOR_NB_SCREENS(l)
{
@ -591,7 +582,7 @@ int zx_kbd_input(char* text/*, int buflen*/)
param[l].font_w, param[l].font_h);
rb->screens[l]->set_drawmode(DRMODE_SOLID);
}
FOR_NB_SCREENS(l)
rb->screens[l]->update();
@ -687,7 +678,7 @@ int zx_kbd_input(char* text/*, int buflen*/)
char_screen = 0;
/* inserts the selected char */
/* find input char */
k = (param[char_screen].page*param[char_screen].lines +
param[char_screen].y)*param[char_screen].max_chars +

View file

@ -76,7 +76,7 @@ show_logo.c
mpio_hd200_hd300.c
#elif defined(SONY_NWZ_LINUX)
nwz_linux.c
#elif defined(AGPTEK_ROCKER) || defined(XDUOO_X3II) || defined(XDUOO_X20) || defined(FIIO_M3K)
#elif defined(HIBY_LINUX) || defined(FIIO_M3K)
rocker_linux.c
#elif defined(RK27_GENERIC) || defined(HM60X) || defined(HM801) \
|| defined(MA9) || defined(MA9C) || defined(MA8) || defined(MA8C) \

View file

@ -10,6 +10,7 @@
* Copyright (C) 2016 by Amaury Pouly
* 2018 by Marcin Bukat
* 2018 by Roman Stolyarov
* 2020 by Solomon Peachy
*
* Based on Rockbox iriver bootloader by Linus Nielsen Feltzing
* and the ipodlinux bootloader by Daniel Palffy and Bernard Leach
@ -60,6 +61,9 @@
#define RBFILE "rockbox.x3ii"
#define ICON_NAME bm_hibyicon
#define OF_NAME "HIBY PLAYER"
#define BUTTON_UP BUTTON_OPTION
#define BUTTON_DOWN BUTTON_HOME
#define BUTTON_SELECT BUTTON_PLAY
#include "bitmaps/hibyicon.h"
#elif defined(XDUOO_X20)
#define ICON_WIDTH 130
@ -67,14 +71,30 @@
#define RBFILE "rockbox.x20"
#define ICON_NAME bm_hibyicon
#define OF_NAME "HIBY PLAYER"
#define BUTTON_UP BUTTON_OPTION
#define BUTTON_DOWN BUTTON_HOME
#define BUTTON_SELECT BUTTON_PLAY
#include "bitmaps/hibyicon.h"
#elif defined(FIIO_M3K)
#define ICON_WIDTH 130
#define ICON_HEIGHT 130
#define RBFILE "rockbox.fiiom3k"
#define ICON_NAME bm_fiioicon
#define BUTTON_LEFT BUTTON_PREV
#define BUTTON_RIGHT BUTTON_NEXT
#define BUTTON_SELECT BUTTON_PLAY
#define OF_NAME "FIIO PLAYER"
#include "bitmaps/fiioicon.h"
#elif defined(EROS_Q)
#define ICON_WIDTH 130
#define ICON_HEIGHT 130
#define RBFILE "rockbox.erosq"
#define ICON_NAME bm_hibyicon
#define OF_NAME "HIBY PLAYER"
#define BUTTON_UP BUTTON_SCROLL_BACK
#define BUTTON_DOWN BUTTON_SCROLL_FWD
#define BUTTON_SELECT BUTTON_PLAY
#include "bitmaps/hibyicon.h"
#else
#error "must define ICON_WIDTH/HEIGHT"
#endif
@ -107,21 +127,8 @@
#error toolsicon has the wrong resolution
#endif
#ifndef BUTTON_LEFT
#define BUTTON_LEFT BUTTON_REW
#endif
#ifndef BUTTON_RIGHT
#define BUTTON_RIGHT BUTTON_FF
#endif
#ifndef BUTTON_SELECT
#define BUTTON_SELECT BUTTON_PLAY
#endif
#ifndef BUTTON_DOWN
#define BUTTON_DOWN BUTTON_NEXT
#endif
#ifndef BUTTON_UP
#define BUTTON_UP BUTTON_PREV
#endif
/* If we started ADB, don't immediately boot into USB mode if we plug in. */
static int adb_running = 0;
/* return icon y position (x is always centered) */
static int get_icon_y(void)
@ -141,7 +148,6 @@ enum boot_mode
BOOT_TOOLS,
BOOT_OF,
BOOT_COUNT,
BOOT_USB, /* special */
BOOT_STOP, /* power down/suspend */
};
@ -199,6 +205,19 @@ static enum boot_mode load_boot_mode(enum boot_mode mode)
return mode;
}
static void mount_storage(int enable)
{
if (enable) {
system("/bin/mkdir -p " BASE_DIR);
if (system("/bin/mount /dev/mmcblk0 " BASE_DIR))
system("/bin/mount /dev/mmcblk0p1 " BASE_DIR);
// XXX possibly invoke sys_serv -> "MOUNT:MOUNT:%s %s", blkdev, mntpoint
} else {
system("/bin/unmount " BASE_DIR);
// XXX possibly invoke sys_serv -> "MOUNT:UNMOUNT:%s %s", mntpoint
}
}
static void save_boot_mode(enum boot_mode mode)
{
int fd = open(BASE_DIR "/.rockbox/rb_bl_mode.txt", O_RDWR | O_CREAT | O_TRUNC);
@ -221,13 +240,12 @@ static enum boot_mode get_boot_mode(void)
#endif
while(true)
{
/* on usb detect, return to usb
* FIXME this is a hack, we need proper usb detection */
if(power_input_status() & POWER_INPUT_USB_CHARGER)
/* on usb detect, immediately boot with last choice */
if(!adb_running && power_input_status() & POWER_INPUT_USB_CHARGER)
{
/* save last choice */
save_boot_mode(mode);
return BOOT_USB;
return mode;
}
/* inactivity detection */
int timeout = last_activity + get_inactivity_tmo();
@ -318,7 +336,7 @@ void error_screen(const char *msg)
lcd_update();
}
int choice_screen(const char *title, bool center, int nr_choices, const char *choices[])
int choice_screen(const char *title, bool center, int nr_choices, const char *choices[], int nr_extra, const char *extra[])
{
int choice = 0;
int max_len = 0;
@ -360,6 +378,14 @@ int choice_screen(const char *title, bool center, int nr_choices, const char *ch
line++;
}
lcd_set_foreground(LCD_RGBPACK(255, 201, 0));
line++;
for (int i = 0 ; i < nr_extra && line < nr_lines ; i++) {
sprintf(buf, "%s", extra[i]);
display_text_center(top_y + h * line, buf);
line++;
}
lcd_update();
/* wait for a key */
@ -370,15 +396,15 @@ int choice_screen(const char *title, bool center, int nr_choices, const char *ch
if(btn & BUTTON_REPEAT)
btn &= ~BUTTON_REPEAT;
/* play -> stop loop and return mode */
if(btn == BUTTON_SELECT || btn == BUTTON_LEFT)
if (btn == BUTTON_SELECT)
{
free(buf);
return btn == BUTTON_SELECT ? choice : -1;
}
/* left/right/up/down: change mode */
if(btn == BUTTON_UP)
if (btn == BUTTON_UP || btn == BUTTON_LEFT)
choice = (choice + nr_choices - 1) % nr_choices;
if(btn == BUTTON_DOWN)
if(btn == BUTTON_DOWN || btn == BUTTON_RIGHT)
choice = (choice + 1) % nr_choices;
}
}
@ -437,7 +463,7 @@ void run_script_menu(void)
entries[nr_entries++] = strdup(ent->d_name);
}
closedir(dir);
int idx = choice_screen("RUN SCRIPT", false, nr_entries, entries);
int idx = choice_screen("RUN SCRIPT", false, nr_entries, entries, 0, NULL);
if(idx >= 0)
run_file(entries[idx]);
for(int i = 0; i < nr_entries; i++)
@ -455,6 +481,7 @@ static void adb(int start)
}
int status;
waitpid(pid, &status, 0);
adb_running = start;
#if 0
if(WIFEXITED(status))
{
@ -471,8 +498,11 @@ static void adb(int start)
static void tools_screen(void)
{
const char *choices[] = {"ADB start", "ADB stop", "Run script", "Restart", "Shutdown"};
int choice = choice_screen("TOOLS MENU", true, 5, choices);
const char *extra[] = { MODEL_NAME, rbversion };
printf("Version: %s\n", rbversion);
printf("%s\n", MODEL_NAME);
const char *choices[] = {"ADB start", "ADB stop", "Run script", "Remount SD", "Restart", "Shutdown", "Recovery", "Back"};
int choice = choice_screen("TOOLS MENU", true, 8, choices, 2, extra);
if(choice == 0)
{
/* run service menu */
@ -492,12 +522,30 @@ static void tools_screen(void)
}
else if(choice == 3)
{
system_reboot();
mount_storage(false);
mount_storage(true);
}
else if(choice == 4)
{
system_reboot();
}
else if(choice == 5)
{
power_off();
}
else if(choice == 6)
{
int fd = open("/proc/jz/reset/reset", O_WRONLY);
if (fd >= 0) {
const char *buf = "recovery\n";
write(fd, buf, strlen(buf));
close(fd);
}
}
else if (choice == 7)
{
return;
}
}
#if 0
@ -555,11 +603,13 @@ int main(int argc, char **argv)
// if(font_id >= 0)
// lcd_setfont(font_id);
mount_storage(true);
/* run all tools menu */
while(true)
{
enum boot_mode mode = get_boot_mode();
if(mode == BOOT_USB || mode == BOOT_OF)
if (mode == BOOT_OF)
{
#if 0
fflush(stdout);
@ -567,7 +617,7 @@ int main(int argc, char **argv)
close(fileno(stdout));
close(fileno(stderr));
#endif
/* for now the only way we have to trigger USB mode it to run the OF */
mount_storage(false);
/* boot OF */
execvp("/usr/bin/hiby_player", argv);
error_screen("Cannot boot OF");
@ -580,12 +630,14 @@ int main(int argc, char **argv)
else if(mode == BOOT_ROCKBOX)
{
fflush(stdout);
mount_storage(true);
system("/bin/cp " BASE_DIR "/.rockbox/" RBFILE " /tmp");
system("/bin/chmod +x /tmp/" RBFILE);
execl("/tmp/" RBFILE, RBFILE, NULL);
printf("execvp failed: %s\n", strerror(errno));
/* fallback to OF in case of failure */
error_screen("Cannot boot Rockbox");
sleep(5 * HZ);
sleep(2 * HZ);
}
else
{

View file

@ -115,7 +115,7 @@ target/hosted/sonynwz/nvp-nwz.c
target/hosted/sonynwz/nwz-db.c
#endif
#if ((defined(AGPTEK_ROCKER) || defined(XDUOO_X3II) || defined(XDUOO_X20) || defined(FIIO_M3K)) && !defined(SIMULATOR))
#if ((defined(HIBY_LINUX) || defined(FIIO_M3K)) && !defined(SIMULATOR))
drivers/lcd-memframe.c
target/hosted/alsa-controls.c
target/hosted/pcm-alsa.c
@ -155,6 +155,14 @@ target/hosted/fiio/system-fiio.c
target/hosted/fiio/usb-fiio.c
#endif
#if (defined(EROS_Q)) && !defined(SIMULATOR)
target/hosted/aigo/button-erosq.c
target/hosted/aigo/debug-erosq.c
target/hosted/aigo/power-erosq.c
target/hosted/aigo/powermgmt-erosq.c
target/hosted/aigo/usb-erosq.c
#endif
#if defined(SAMSUNG_YPR0) && !defined(SIMULATOR)
drivers/adc-as3514.c
#if (CONFIG_RTC == RTC_AS3514)
@ -513,6 +521,8 @@ drivers/audio/rocker_codec.c
drivers/audio/xduoolinux_codec.c
#elif defined(HAVE_FIIO_LINUX_CODEC) && !defined(SIMULATOR)
drivers/audio/fiiolinux_codec.c
#elif defined(HAVE_EROSQ_LINUX_CODEC) && !defined(SIMULATOR)
drivers/audio/erosqlinux_codec.c
#elif defined(HAVE_SDL_AUDIO)
drivers/audio/sdl.c

View file

@ -15,8 +15,8 @@ mempcpy.c
defined(CREATIVE_ZVx) || defined(SANSA_CONNECT) || defined(SANSA_FUZEPLUS) || \
defined(COWON_D2) || defined(MINI2440) || defined(SAMSUNG_YPR0) || \
defined(SAMSUNG_YPR1) || defined(DX50) || defined(DX90) || (defined(MROBE_500) && !defined(LCD_USE_DMA)) || \
defined(CREATIVE_ZEN) || defined(CREATIVE_ZENXFI) || defined(SONY_NWZ_LINUX) || defined(AGPTEK_ROCKER) || \
defined(XDUOO_X3II) || defined(XDUOO_X20) || defined(FIIO_M3K)) && \
defined(CREATIVE_ZEN) || defined(CREATIVE_ZENXFI) || defined(SONY_NWZ_LINUX) || defined(HIBY_LINUX) || \
defined(FIIO_M3K)) && \
!defined(SIMULATOR)
#if LCD_DEPTH >= 24
lcd-as-memframe-24bit.c

View file

@ -0,0 +1,181 @@
/***************************************************************************
* __________ __ ___.
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
* \/ \/ \/ \/ \/
* $Id$
*
*
* Copyright (c) 2018 Marcin Bukat
* Copyright (c) 2020 Solomon Peachy
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
****************************************************************************/
//#define LOGF_ENABLE
#include "config.h"
#include "audio.h"
#include "audiohw.h"
#include "button.h"
#include "system.h"
#include "kernel.h"
#include "panic.h"
#include "sysfs.h"
#include "alsa-controls.h"
#include "pcm-alsa.h"
#include "pcm_sw_volume.h"
#include "logf.h"
static int fd_hw;
static int inited = 0;
static long int vol_l_hw = 255;
static long int vol_r_hw = 255;
static long int last_ps = 0;
static void hw_open(void)
{
fd_hw = open("/dev/snd/controlC0", O_RDWR);
if(fd_hw < 0)
panicf("Cannot open '/dev/snd/controlC0'");
}
static void hw_close(void)
{
close(fd_hw);
}
void audiohw_mute(int mute)
{
logf("mute %d", mute);
if(mute)
{
long int ps0 = 0;
alsa_controls_set_ints("Output Port Switch", 1, &ps0);
}
else
{
last_ps = 0;
erosq_get_outputs();
}
}
int erosq_get_outputs(void) {
long int ps = 0; // Muted, if nothing is plugged in!
int status = 0;
if (!inited) return ps;
const char * const sysfs_lo_switch = "/sys/class/switch/lineout/state";
const char * const sysfs_hs_switch = "/sys/class/switch/headset/state";
sysfs_get_int(sysfs_lo_switch, &status);
if (status) ps = 1; // lineout
sysfs_get_int(sysfs_hs_switch, &status);
if (status) ps = 2; // headset
erosq_set_output(ps);
return ps;
}
void erosq_set_output(int ps)
{
if (!inited) return;
if (last_ps != ps)
{
logf("set out %d/%d", ps, last_ps);
/* Output port switch */
last_ps = ps;
alsa_controls_set_ints("Output Port Switch", 1, &last_ps);
audiohw_set_volume(vol_l_hw, vol_r_hw);
}
}
void audiohw_preinit(void)
{
logf("hw preinit");
alsa_controls_init();
hw_open();
audiohw_mute(true); /* Start muted to avoid the POP */
inited = 1;
}
void audiohw_postinit(void)
{
logf("hw postinit");
erosq_set_output(erosq_get_outputs()); /* Unmute */
}
void audiohw_close(void)
{
logf("hw close");
inited = 0;
hw_close();
alsa_controls_close();
}
void audiohw_set_frequency(int fsel)
{
(void)fsel;
}
void audiohw_set_volume(int vol_l, int vol_r)
{
logf("hw vol %d %d", vol_l, vol_r);
long l,r;
vol_l_hw = vol_l;
vol_r_hw = vol_r;
if (lineout_inserted()) {
l = 0;
r = 0;
} else {
l = vol_l_hw;
r = vol_r_hw;
}
/* SW volume for <= 1.0 gain, HW at unity, < -740 == MUTE */
int sw_volume_l = l <= -740 ? PCM_MUTE_LEVEL : MIN(l, 0);
int sw_volume_r = r <= -740 ? PCM_MUTE_LEVEL : MIN(r, 0);
pcm_set_master_volume(sw_volume_l, sw_volume_r);
}
void audiohw_set_lineout_volume(int vol_l, int vol_r)
{
long l,r;
logf("lo vol %d %d", vol_l, vol_r);
(void)vol_l;
(void)vol_r;
if (lineout_inserted()) {
l = 0;
r = 0;
} else {
l = vol_l_hw;
r = vol_r_hw;
}
int sw_volume_l = l <= -740 ? PCM_MUTE_LEVEL : MIN(l, 0);
int sw_volume_r = r <= -740 ? PCM_MUTE_LEVEL : MIN(r, 0);
pcm_set_master_volume(sw_volume_l, sw_volume_r);
}

View file

@ -226,6 +226,8 @@ struct sound_settings_info
#include "xduoolinux_codec.h"
#elif defined(HAVE_FIIO_LINUX_CODEC)
#include "fiiolinux_codec.h"
#elif defined(HAVE_EROSQ_LINUX_CODEC)
#include "erosqlinux_codec.h"
#endif
/* convert caps into defines */

View file

@ -162,6 +162,7 @@
#define XDUOO_X3II_PAD 69
#define XDUOO_X20_PAD 70
#define FIIO_M3K_PAD 71
#define EROSQ_PAD 72
/* CONFIG_REMOTE_KEYPAD */
#define H100_REMOTE 1
@ -602,6 +603,8 @@ Lyre prototype 1 */
#include "config/xduoox20.h"
#elif defined(FIIO_M3K)
#include "config/fiiom3k.h"
#elif defined(EROS_Q)
#include "config/aigoerosq.h"
#else
//#error "unknown hwardware platform!"
#endif

View file

@ -17,6 +17,7 @@
#define CONFIG_PLATFORM (PLATFORM_HOSTED)
#endif
#define HIBY_LINUX
#define HAVE_FPU
/* define this if you have a colour LCD */

View file

@ -0,0 +1,132 @@
/*
* This config file is for the AIGO EROS Q / EROS K (and its clones)
*/
/* For Rolo and boot loader */
#define MODEL_NUMBER 113
#define MODEL_NAME "AIGO Eros Q"
/* LCD dimensions */
#define LCD_WIDTH 320
#define LCD_HEIGHT 240
/* sqrt(240^2 + 320^2) / 2.0 = 200 */
#define LCD_DPI 200
#ifndef SIMULATOR
#define CONFIG_PLATFORM (PLATFORM_HOSTED)
#endif
#define HIBY_LINUX
#define HAVE_FPU
/* define this if you have a colour LCD */
#define HAVE_LCD_COLOR
#define HAVE_LCD_ENABLE
/* Define this if the LCD can shut down */
#define HAVE_LCD_SHUTDOWN
/* define this if you want album art for this target */
#define HAVE_ALBUMART
/* define this to enable bitmap scaling */
#define HAVE_BMP_SCALING
/* define this to enable JPEG decoding */
#define HAVE_JPEG
/* define this if you have access to the quickscreen */
#define HAVE_QUICKSCREEN
/* define this if you would like tagcache to build on this target */
#define HAVE_TAGCACHE
#define LCD_DEPTH 32
/* Check that but should not matter */
#define LCD_PIXELFORMAT XRGB8888
#define HAVE_BACKLIGHT
#define HAVE_BACKLIGHT_BRIGHTNESS
/* Main LCD backlight brightness range and defaults: the backlight driver
* has levels from 0 to 255. But 0 is off so start at 1.
*/
#define MIN_BRIGHTNESS_SETTING 1
#define MAX_BRIGHTNESS_SETTING 255
#define BRIGHTNESS_STEP 5
#define DEFAULT_BRIGHTNESS_SETTING 70
/* Which backlight fading type? */
#define CONFIG_BACKLIGHT_FADING BACKLIGHT_FADING_SW_SETTING
/* define this if you have a real-time clock */
#define CONFIG_RTC APPLICATION
/* The number of bytes reserved for loadable codecs */
#define CODEC_SIZE 0x80000
/* The number of bytes reserved for loadable plugins */
#define PLUGIN_BUFFER_SIZE 0x100000
#define HAVE_HEADPHONE_DETECTION
#define HAVE_LINEOUT_DETECTION
/* KeyPad configuration for plugins */
#define CONFIG_KEYPAD EROSQ_PAD
/* define this if the target has volume keys which can be used in the lists */
#define HAVE_VOLUME_IN_LIST
#ifndef SIMULATOR
/* We have usb power and can detect usb but it is handled by Linux */
#define HAVE_USB_POWER
#endif
#define CONFIG_BATTERY_MEASURE VOLTAGE_MEASURE
/* Linux controlls charging, we can monitor */
#define CONFIG_CHARGING CHARGING_MONITOR
/* define this if the hardware can be powered off while charging */
#define HAVE_POWEROFF_WHILE_CHARGING
/* same dimensions as gigabeats */
#define CONFIG_LCD LCD_INGENIC_LINUX
/* Define this if you have a software controlled poweroff */
#define HAVE_SW_POWEROFF
/* Define this to the CPU frequency */
#define CPU_FREQ 108000000
/* No special storage */
#define CONFIG_STORAGE STORAGE_HOSTFS
#define HAVE_STORAGE_FLUSH
/* Battery */
#define BATTERY_TYPES_COUNT 1
/* Audio codec */
#define HAVE_EROSQ_LINUX_CODEC
/* Rockbox has to handle the volume level */
#define HAVE_SW_VOLUME_CONTROL
/* We don't have hardware controls */
#define HAVE_SW_TONE_CONTROLS
/* HW codec is flexible */
#define HW_SAMPR_CAPS SAMPR_CAP_ALL_192
/* Battery */
#define BATTERY_CAPACITY_DEFAULT 2000 /* default battery capacity */
#define BATTERY_CAPACITY_MIN 2000 /* min. capacity selectable */
#define BATTERY_CAPACITY_MAX 2000 /* max. capacity selectable */
#define BATTERY_CAPACITY_INC 0 /* capacity increment */
/* ROLO */
#define BOOTFILE_EXT "erosq"
#define BOOTFILE "rockbox." BOOTFILE_EXT
#define BOOTDIR "/.rockbox"

View file

@ -17,6 +17,8 @@
#define CONFIG_PLATFORM (PLATFORM_HOSTED)
#endif
#define HAVE_FPU
#define HW_SAMPR_CAPS (SAMPR_CAP_44 | SAMPR_CAP_48 | SAMPR_CAP_88 | SAMPR_CAP_96 | SAMPR_CAP_176 | SAMPR_CAP_192)
/* define this if you have a bitmap LCD display */

View file

@ -17,6 +17,8 @@
#define CONFIG_PLATFORM (PLATFORM_HOSTED)
#endif
#define HIBY_LINUX
#define HAVE_FPU
/* define this if you have a colour LCD */

View file

@ -17,6 +17,7 @@
#define CONFIG_PLATFORM (PLATFORM_HOSTED)
#endif
#define HIBY_LINUX
#define HAVE_FPU
/* define this if you have a colour LCD */

View file

@ -0,0 +1,13 @@
#ifndef __EROSQLINUX_CODEC__
#define __EROSQLINUX_CODEC__
#define AUDIOHW_CAPS (LINEOUT_CAP)
AUDIOHW_SETTING(VOLUME, "dB", 0, 1, -74, 6, -25)
void audiohw_mute(int mute);
void erosq_set_output(int ps);
int erosq_get_outputs(void);
#endif

View file

@ -42,7 +42,7 @@
#if !defined(APPLICATION) || defined(SAMSUNG_YPR0) || defined(SAMSUNG_YPR1) || \
defined(DX50) || defined(DX90) || defined(SONY_NWZ_LINUX) || \
defined(AGPTEK_ROCKER) || defined(XDUOO_X3II) || defined(XDUOO_X20) || defined(FIIO_M3K)
defined(HIBY_LINUX) || defined(FIIO_M3K)
#if defined(SAMSUNG_YPR0) || defined(SAMSUNG_YPR1)
#define HOME_DIR "/mnt/media0"
@ -51,7 +51,7 @@
#elif defined(DX50) || defined(DX90)
/* Where to put save files like recordings, playlists, screen dumps ...*/
#define HOME_DIR "/mnt/sdcard"
#elif defined(AGPTEK_ROCKER) || defined(XDUOO_X3II) || defined(XDUOO_X20)
#elif defined(HIBY_LINUX)
#define HOME_DIR "/mnt/sd_0"
#elif defined(FIIO_M3K)
#define HOME_DIR "/mnt"
@ -92,7 +92,7 @@
#define VIEWERS_DIR PLUGIN_DIR "/viewers"
#if defined(APPLICATION) && !(defined(SAMSUNG_YPR0) || defined(SAMSUNG_YPR1) || \
defined(DX50) || defined(DX90) || defined(SONY_NWZ_LINUX) || defined(AGPTEK_ROCKER) || defined(XDUOO_X3II) || defined(XDUOO_X20))
defined(DX50) || defined(DX90) || defined(SONY_NWZ_LINUX) || defined(HIBY_LINUX))
#define PLUGIN_DATA_DIR ROCKBOX_DIR "/rocks.data"
#define PLUGIN_GAMES_DATA_DIR PLUGIN_DATA_DIR
#define PLUGIN_APPS_DATA_DIR PLUGIN_DATA_DIR

View file

@ -347,7 +347,7 @@ static inline void cpu_boost_unlock(void)
#ifndef SIMULATOR
bool dbg_ports(void);
#endif
#if (CONFIG_PLATFORM & PLATFORM_NATIVE) || defined(SONY_NWZ_LINUX) || defined(AGPTEK_ROCKER) || defined(XDUOO_X3II) || defined(XDUOO_X20)
#if (CONFIG_PLATFORM & PLATFORM_NATIVE) || defined(SONY_NWZ_LINUX) || defined(HIBY_LINUX) || defined(FIIO_M3K)
bool dbg_hw_info(void);
#endif

View file

@ -85,7 +85,7 @@
/* compiled-in font */
extern struct font sysfont;
#if !defined(BOOTLOADER) || defined(SONY_NWZ_LINUX)
#if !defined(BOOTLOADER) || defined(SONY_NWZ_LINUX) || defined(HIBY_LINUX) || defined(FIIO_M3K)
struct buflib_alloc_data {
struct font font; /* must be the first member! */

View file

View file

@ -0,0 +1,188 @@
/***************************************************************************
* __________ __ ___
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
* \/ \/ \/ \/ \/
*
* Copyright (C) 2017 Marcin Bukat
* Copyright (C) 2020 Solomon Peachy
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
****************************************************************************/
#include <poll.h>
//#include <dir.h>
#include <errno.h>
#include <unistd.h>
#include <sys/types.h>
#include <linux/input.h>
#include <fcntl.h>
#include <string.h>
#include <stdlib.h>
#include "sysfs.h"
#include "button.h"
#include "button-target.h"
#include "panic.h"
#include "kernel.h"
#include "backlight.h"
#include "backlight-target.h"
#include "erosqlinux_codec.h"
#define NR_POLL_DESC 3
static struct pollfd poll_fds[NR_POLL_DESC];
static int button_map(int keycode)
{
switch(keycode)
{
case KEY_POWER:
return BUTTON_POWER;
case KEY_MENU:
return BUTTON_MENU;
case KEY_BACK:
return BUTTON_BACK;
case KEY_NEXTSONG:
return BUTTON_PREV;
case KEY_PREVIOUSSONG:
return BUTTON_NEXT; // Yes, backwards!
case KEY_PLAYPAUSE:
return BUTTON_PLAY;
case KEY_LEFT:
return BUTTON_SCROLL_BACK;
case KEY_RIGHT:
return BUTTON_SCROLL_FWD;
case KEY_VOLUMEUP:
return BUTTON_VOL_UP;
case KEY_VOLUMEDOWN:
return BUTTON_VOL_DOWN;
default:
return 0;
}
}
void button_init_device(void)
{
const char * const input_devs[] = {
"/dev/input/event0", // Rotary encoder
"/dev/input/event1" // Keys
};
for(int i = 0; i < NR_POLL_DESC; i++)
{
int fd = open(input_devs[i], O_RDWR | O_CLOEXEC);
if(fd < 0)
{
panicf("Cannot open input device: %s\n", input_devs[i]);
}
poll_fds[i].fd = fd;
poll_fds[i].events = POLLIN;
poll_fds[i].revents = 0;
}
}
int button_read_device(void)
{
static int button_bitmap = 0;
struct input_event event;
// FIXME TODO: Make this work via HAVE_SCROLL_WHEEL instead
/* Wheel gives us press+release back to back, clear them after time elapses */
static long last_tick = 0;
if (button_bitmap & (BUTTON_SCROLL_BACK|BUTTON_SCROLL_FWD) &&
current_tick - last_tick >= 2)
{
button_bitmap &= ~(BUTTON_SCROLL_BACK|BUTTON_SCROLL_FWD);
}
/* check if there are any events pending and process them */
while(poll(poll_fds, NR_POLL_DESC, 0))
{
for(int i = 0; i < NR_POLL_DESC; i++)
{
/* read only if non-blocking */
if(poll_fds[i].revents & POLLIN)
{
int size = read(poll_fds[i].fd, &event, sizeof(event));
if(size == (int)sizeof(event))
{
int keycode = event.code;
/* event.value == 1 means press
* event.value == 0 means release
*/
bool press = event.value ? true : false;
/* map linux event code to rockbox button bitmap */
if(press)
{
int bmap = button_map(keycode);
if (bmap & (BUTTON_SCROLL_BACK|BUTTON_SCROLL_FWD))
last_tick = current_tick;
button_bitmap |= bmap;
}
else
{
/* Wheel gives us press+release back to back; ignore the release */
int bmap = button_map(keycode) & ~(BUTTON_SCROLL_BACK|BUTTON_SCROLL_FWD);
button_bitmap &= ~bmap;
}
}
}
}
}
return button_bitmap;
}
bool headphones_inserted(void)
{
#ifdef BOOTLOADER
int ps = 0;
#else
int ps = erosq_get_outputs();
#endif
return (ps == 2);
}
bool lineout_inserted(void)
{
#ifdef BOOTLOADER
int ps = 0;
#else
int ps = erosq_get_outputs();
#endif
return (ps == 1);
}
void button_close_device(void)
{
/* close descriptors */
for(int i = 0; i < NR_POLL_DESC; i++)
{
close(poll_fds[i].fd);
}
}

View file

@ -0,0 +1,45 @@
/***************************************************************************
* __________ __ ___.
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
* \/ \/ \/ \/ \/
*
* Copyright (C) 2020 Solomon Peachy
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
****************************************************************************/
#ifndef _BUTTON_TARGET_H_
#define _BUTTON_TARGET_H_
/* Main unit's buttons */
#define BUTTON_POWER 0x00000001
#define BUTTON_MENU 0x00000002
#define BUTTON_BACK 0x00000004
#define BUTTON_PLAY 0x00000008
#define BUTTON_NEXT 0x00000010
#define BUTTON_PREV 0x00000020
#define BUTTON_VOL_UP 0x00000040
#define BUTTON_VOL_DOWN 0x00000080
#define BUTTON_SCROLL_BACK 0x00000100
#define BUTTON_SCROLL_FWD 0x00000200
#define BUTTON_MAIN (BUTTON_POWER | BUTTON_MENU | BUTTON_BACK | BUTTON_PREV | \
BUTTON_NEXT | BUTTON_PLAY | BUTTON_VOL_UP | BUTTON_VOL_DOWN | BUTTON_SCROLL_BACK | BUTTON_SCROLL_FWD)
#define BUTTON_LEFT BUTTON_PREV
#define BUTTON_RIGHT BUTTON_NEXT
/* Software power-off */
#define POWEROFF_BUTTON BUTTON_POWER
#define POWEROFF_COUNT 25
#endif /* _BUTTON_TARGET_H_ */

View file

@ -0,0 +1 @@
#include "../agptek/debug-agptek.c"

View file

@ -0,0 +1,49 @@
# __________ __ ___.
# Open \______ \ ____ ____ | | _\_ |__ _______ ___
# Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
# Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
# Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
# \/ \/ \/ \/ \/
# $Id$
#
INCLUDES += -I$(FIRMDIR)/include -I$(FIRMDIR)/export $(TARGET_INC) -I$(BUILDDIR) -I$(APPSDIR)
SIMFLAGS += $(INCLUDES) $(DEFINES) -DHAVE_CONFIG_H $(GCCOPTS)
# bootloader build is sligtly different
ifneq (,$(findstring bootloader,$(APPSDIR)))
SRC += $(call preprocess, $(APPSDIR)/SOURCES)
CLEANOBJS += $(BUILDDIR)/bootloader.*
endif #bootloader
.SECONDEXPANSION: # $$(OBJ) is not populated until after this
ifneq (,$(findstring bootloader,$(APPSDIR)))
# bootloader build
$(BUILDDIR)/bootloader.elf : $$(OBJ) $(FIRMLIB) $(CORE_LIBS)
$(call PRINTS,LD $(@F))$(CC) $(GCCOPTS) -Os -o $@ $(OBJ) \
-L$(BUILDDIR)/firmware -lfirmware \
-L$(BUILDDIR)/lib $(call a2lnk,$(CORE_LIBS)) \
$(LDOPTS) $(GLOBAL_LDOPTS) -Wl,--gc-sections -Wl,-Map,$(BUILDDIR)/bootloader.map
$(BUILDDIR)/$(BINARY): $(BUILDDIR)/bootloader.elf
$(call PRINTS,OC $(@F))$(call objcopy,$^,$@)
else
# rockbox app build
$(BUILDDIR)/rockbox.elf : $$(OBJ) $(FIRMLIB) $(VOICESPEEXLIB) $(CORE_LIBS)
$(call PRINTS,LD $(@F))$(CC) $(GCCOPTS) -Os -o $@ $(OBJ) \
-L$(BUILDDIR)/firmware -lfirmware \
-L$(RBCODEC_BLD)/codecs $(call a2lnk, $(VOICESPEEXLIB)) \
-L$(BUILDDIR)/lib $(call a2lnk,$(CORE_LIBS)) \
$(LDOPTS) $(GLOBAL_LDOPTS) -Wl,-Map,$(BUILDDIR)/rockbox.map
$(BUILDDIR)/$(BINARY): $(BUILDDIR)/rockbox.elf
$(call PRINTS,OC $(@F))$(call objcopy,$^,$@)
endif

View file

@ -0,0 +1,32 @@
/***************************************************************************
* __________ __ ___.
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
* \/ \/ \/ \/ \/
*
* Copyright (C) 2016 Amaury Pouly
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
****************************************************************************/
#ifndef __LCD_TARGET_H__
#define __LCD_TARGET_H__
/* needs special ioctl() to redraw updated framebuffer content */
#define LCD_OPTIMIZED_UPDATE
#define LCD_OPTIMIZED_UPDATE_RECT
extern fb_data *framebuffer; /* see lcd-erosq.c */
#define LCD_FRAMEBUF_ADDR(col, row) (framebuffer + (row)*LCD_WIDTH + (col))
extern void lcd_set_active(bool active);
#endif /* __LCD_TARGET_H__ */

View file

@ -0,0 +1,74 @@
/***************************************************************************
* __________ __ ___.
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
* \/ \/ \/ \/ \/
*
* Copyright (C) 2017 by Marcin Bukat
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
****************************************************************************/
#include <sys/types.h>
#include <fcntl.h>
#include <string.h>
#include <unistd.h>
#include <stdio.h>
#include "system.h"
#include "power-erosq.h"
#include "power.h"
#include "panic.h"
#include "sysfs.h"
const char * const sysfs_bat_voltage =
"/sys/class/power_supply/battery/voltage_now";
const char * const sysfs_bat_capacity =
"/sys/class/power_supply/battery/capacity";
const char * const sysfs_bat_status =
"/sys/class/power_supply/battery/status";
const char * const sysfs_pow_supply =
"/sys/class/power_supply/usb/present";
unsigned int erosq_power_input_status(void)
{
int present = 0;
sysfs_get_int(sysfs_pow_supply, &present);
return present ? POWER_INPUT_USB_CHARGER : POWER_INPUT_NONE;
}
bool erosq_power_charging_status(void)
{
char buf[12] = {0};
sysfs_get_string(sysfs_bat_status, buf, sizeof(buf));
return (strncmp(buf, "Charging", 8) == 0);
}
unsigned int erosq_power_get_battery_voltage(void)
{
int battery_voltage;
sysfs_get_int(sysfs_bat_voltage, &battery_voltage);
return battery_voltage/1000;
}
unsigned int erosq_power_get_battery_capacity(void)
{
int battery_capacity;
sysfs_get_int(sysfs_bat_capacity, &battery_capacity);
return battery_capacity;
}

View file

@ -0,0 +1,31 @@
/***************************************************************************
* __________ __ ___.
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
* \/ \/ \/ \/ \/
*
* Copyright (C) 2017 by Marcin Bukat
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
****************************************************************************/
#ifndef _POWER_XDUOO_H_
#define _POWER_XDUOO_H_
#include <stdbool.h>
#include "config.h"
unsigned int erosq_power_input_status(void);
bool erosq_power_charging_status(void);
unsigned int erosq_power_get_battery_voltage(void);
unsigned int erosq_power_get_battery_capacity(void);
#endif /* _POWER_XDUOO_H_ */

View file

@ -0,0 +1,61 @@
/***************************************************************************
* __________ __ ___.
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
* \/ \/ \/ \/ \/
*
* Copyright (C) 2017 Marcin Bukat
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
****************************************************************************/
#include "powermgmt.h"
#include "power.h"
#include "power-erosq.h"
const unsigned short battery_level_dangerous[BATTERY_TYPES_COUNT] =
{
3470
};
/* the OF shuts down at this voltage */
const unsigned short battery_level_shutoff[BATTERY_TYPES_COUNT] =
{
3400
};
/* voltages (millivolt) of 0%, 10%, ... 100% when charging disabled */
const unsigned short percent_to_volt_discharge[BATTERY_TYPES_COUNT][11] =
{
{ 3400, 3639, 3697, 3723, 3757, 3786, 3836, 3906, 3980, 4050, 4159 }
};
/* voltages (millivolt) of 0%, 10%, ... 100% when charging enabled */
const unsigned short const percent_to_volt_charge[11] =
{
3485, 3780, 3836, 3857, 3890, 3930, 3986, 4062, 4158, 4185, 4196
};
unsigned int power_input_status(void)
{
/* POWER_INPUT_USB_CHARGER, POWER_INPUT_NONE */
return erosq_power_input_status();
}
int _battery_voltage(void)
{
return erosq_power_get_battery_voltage();
}
bool charging_state(void)
{
return erosq_power_charging_status();
}

View file

@ -0,0 +1,28 @@
/***************************************************************************
* __________ __ ___.
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
* \/ \/ \/ \/ \/
*
* Copyright (C) 2017 Marcin Bukat
* Copyright (C) 2016 Amaury Pouly
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
****************************************************************************/
#ifndef __SYSTEM_TARGET_H__
#define __SYSTEM_TARGET_H__
#include "kernel-unix.h"
#include "system-hosted.h"
#define NEED_GENERIC_BYTESWAPS
#endif /* __SYSTEM_TARGET_H__ */

View file

@ -0,0 +1,118 @@
/***************************************************************************
* __________ __ ___
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
* \/ \/ \/ \/ \/
*
* Copyright (C) 2018 by Marcin Bukat
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
****************************************************************************/
#include <stdlib.h>
#include <sys/mount.h>
#include <string.h>
#include "config.h"
#include "disk.h"
#include "usb.h"
#include "sysfs.h"
#include "power.h"
#include "power-erosq.h"
static bool adb_mode = false;
/* TODO: implement usb detection properly */
int usb_detect(void)
{
return power_input_status() == POWER_INPUT_USB_CHARGER ? USB_INSERTED : USB_EXTRACTED;
}
void usb_enable(bool on)
{
/* Ignore usb enable/disable when ADB is enabled so we can fireup adb shell
* without entering ums mode
*/
if (!adb_mode)
{
sysfs_set_int("/sys/class/android_usb/android0/enable", on ? 1 : 0);
}
}
/* This is called by usb thread after usb extract in order to return
* regular FS access
*
* returns the # of successful mounts
*/
int disk_mount_all(void)
{
const char *dev[] = {"/dev/mmcblk0p1", "/dev/mmcblk0"};
const char *fs[] = {"vfat", "exfat"};
sysfs_set_string("/sys/class/android_usb/android0/f_mass_storage/lun/file", "");
for (int i=0; i<2; i++)
{
for (int j=0; j<2; j++)
{
if (mount(dev[i], "/mnt/sd_0", fs[j], 0, NULL) == 0)
{
return 1;
}
}
}
return 0;
}
/* This is called by usb thread after all threads ACKs usb inserted message
*
* returns the # of successful unmounts
*/
int disk_unmount_all(void)
{
if (umount("/mnt/sd_0") == 0)
{
sysfs_set_string("/sys/class/android_usb/android0/f_mass_storage/lun/file", "/dev/mmcblk0");
return 1;
}
return 0;
}
void usb_init_device(void)
{
char functions[32] = {0};
/* Check if ADB was activated in bootloader */
sysfs_get_string("/sys/class/android_usb/android0/functions", functions, sizeof(functions));
adb_mode = (strstr(functions, "adb") == NULL) ? false : true;
usb_enable(false);
if (adb_mode)
{
sysfs_set_string("/sys/class/android_usb/android0/functions", "mass_storage,adb");
sysfs_set_string("/sys/class/android_usb/android0/idVendor", "18D1");
sysfs_set_string("/sys/class/android_usb/android0/idProduct", "D002");
}
else
{
sysfs_set_string("/sys/class/android_usb/android0/functions", "mass_storage");
sysfs_set_string("/sys/class/android_usb/android0/idVendor", "C502");
sysfs_set_string("/sys/class/android_usb/android0/idProduct", "0023");
}
sysfs_set_string("/sys/class/android_usb/android0/iManufacturer", "Rockbox.org");
sysfs_set_string("/sys/class/android_usb/android0/iProduct", "Rockbox media player");
sysfs_set_string("/sys/class/android_usb/android0/iSerial", "0123456789ABCDEF");
sysfs_set_string("/sys/class/android_usb/android0/f_mass_storage/inquiry_string", "ErosQ 0100");
}

View file

@ -37,7 +37,7 @@
#include "logf.h"
#if !(defined(BOOTLOADER) || defined(CHECKWPS) || defined(SIMULATOR))
#if (defined(AGPTEK_ROCKER) || defined(XDUOO_X3II) || defined(XDUOO_X20))
#if defined(HIBY_LINUX)
#define PIVOT_ROOT "/mnt/sd_0"
#elif defined(FIIO_M3K)
#define PIVOT_ROOT "/mnt" // XXX check this!
@ -56,8 +56,8 @@ static const char rbhome[] = HOME_DIR;
#endif
#if !(defined(SAMSUNG_YPR0) || defined(SAMSUNG_YPR1) || defined(DX50) || \
defined(SONY_NWZ_LINUX) || defined(DX90) || defined(AGPTEK_ROCKER) || \
defined(XDUOO_X3II) || defined(XDUOO_X20) || defined(FIIO_M3K) || defined(FIIO_M3K_PRO)) && \
defined(SONY_NWZ_LINUX) || defined(DX90) || defined(HIBY_LINUX) || \
defined(FIIO_M3K)) && \
!defined(__PCTOOL__)
/* Special dirs are user-accessible (and user-writable) dirs which take priority
* over the ones where Rockbox is installed to. Classic example would be

View file

@ -41,4 +41,3 @@
#define POWEROFF_COUNT 25
#endif /* _BUTTON_TARGET_H_ */

View file

@ -448,6 +448,10 @@ $releasenotes="/wiki/ReleaseNotes315";
name => 'FiiO M3K',
status => 1,
},
'erosq' => {
name => 'AIGO EROS Q / K',
status => 1,
},
'ihifi770' => {
name => 'Xuelin iHIFI 770',
status => 2,

32
tools/configure vendored
View file

@ -1589,7 +1589,8 @@ cat <<EOF
==AgpTek== 252) 800 227) NW-A20 series
240) Rocker 228) NWZ-A860 series
==FiiO== 229) NWZ-S750 series
244) M3K
==AIGO== 244) M3K
245) Eros Q / K
EOF
@ -4056,7 +4057,7 @@ fi
t_cpu="hosted"
t_manufacturer="xduoo"
t_model="xduoo_x3ii"
# sysfont="20-Terminus-Bold"
sysfont="16-Terminus"
;;
243|xduoox20)
@ -4079,7 +4080,7 @@ fi
t_cpu="hosted"
t_manufacturer="xduoo"
t_model="xduoo_x20"
# sysfont="20-Terminus-Bold"
sysfont="16-Terminus"
;;
244|fiiom3k)
@ -4102,7 +4103,30 @@ fi
t_manufacturer="fiio"
t_model="m3k"
mipsellinuxcc
# sysfont="20-Terminus-Bold"
sysfont="16-Terminus"
;;
245|erosq)
target_id=113
application=yes
app_type="erosq"
modelname="erosq"
target="EROS_Q"
memory=8
mipsellinuxcc
tool="cp "
boottool="cp "
bmp2rb_mono="$rootdir/tools/bmp2rb -f 0"
bmp2rb_native="$rootdir/tools/bmp2rb -f 10"
output="rockbox.erosq"
bootoutput="bootloader.erosq"
appextra="recorder:gui:hosted"
plugins="yes"
# architecture, manufacturer and model for the target-tree build
t_cpu="hosted"
t_manufacturer="aigo"
t_model="erosq"
sysfont="16-Terminus"
;;
250|ihifi770c)

View file

@ -38,6 +38,10 @@ if ($model eq 'rocker') {
@ubiopts = ("-e", "124KiB", "-c", "1024", "-m", "2048", "-j", "8192KiB", "-U");
} elsif ($model eq 'x20') {
@ubiopts = ("-e", "124KiB", "-c", "1024", "-m", "2048", "-j", "8192KiB", "-U");
} elsif ($model eq 'eros_q') {
@ubiopts = ("-e", "124KiB", "-c", "1024", "-m", "2048", "-j", "8192KiB", "-U");
} elsif ($model eq 'm3k') {
@ubiopts = ("-e", "124KiB", "-c", "2048", "-m", "2048", "-j", "8192KiB", "-U");
} else {
die ("Unknown hiby model: $model\n");
}
@ -81,7 +85,6 @@ while (<UPDATE>) {
if ($rootfs_found) {
if (/file_path=(.*)/) {
$ubiname = basename($1);
$ubiname =~ tr/[a-z]/[A-Z]/;
last;
}
} else {
@ -92,7 +95,11 @@ while (<UPDATE>) {
}
close UPDATE;
die("can't locate rootfs image") if (! -e "$isowork/$ubiname");
if (! -e "$isowork/$ubiname") {
$ubiname =~ tr/[a-z]/[A-Z]/;
die("can't locate rootfs image ($ubiname)") if (! -e "$isowork/$ubiname");
}
$ubiname = "$isowork/$ubiname";
### Extract RootFS
@ -102,6 +109,7 @@ mkdir($rootfsdir) || die ("Can't create '$rootfsdir'");
@sysargs = ("ubireader_extract_files", "-k", "-o", $rootfsdir, $ubiname);
system(@sysargs);
# exit(0);
### Mangle RootFS
# Generate rb_bootloader.sh
@ -109,19 +117,74 @@ my $rbbasename = basename($rbbname);
my $bootloader_sh =
"#!/bin/sh
mount /dev/mmcblk0 /mnt/sd_0 &>/dev/null || \
mount /dev/mmcblk0p1 /mnt/sd_0 &>/dev/null
#mkdir -p /mnt/sd_0
#
#mount /dev/mmcblk0 /mnt/sd_0 &>/dev/null || \
#mount /dev/mmcblk0p1 /mnt/sd_0 &>/dev/null
killall $rbbasename
killall -9 $rbbasename
killall hiby_player &>/dev/null
killall -9 hiby_player &>/dev/null
killall $rbbasename &>/dev/null
killall -9 $rbbasename &>/dev/null
# /etc/init.d/K90adb start
# Rockbox launcher!
/usr/bin/$rbbasename
sleep 1
reboot
";
";
open FILE, ">$rootfsdir/usr/bin/hiby_player.sh" || die ("can't write bootloader script!");
print FILE $bootloader_sh;
close FILE;
chmod 0755, "$rootfsdir/usr/bin/hiby_player.sh";
# Auto mount/unmount external USB drives
open FILE, ">>$rootfsdir/etc/mdev.conf" || die ("can't access mdev conf!");
print FILE "sd[a-z][0-9]+ 0:0 664 @ /etc/rb_inserting.sh\n";
print FILE "mmcblk[0-9]p[0-9] 0:0 664 @ /etc/rb_inserting.sh\n";
print FILE "mmcblk[0-9] 0:0 664 @ /etc/rb_inserting.sh\n";
print FILE "sd[a-z] 0:0 664 \$ /etc/rb_removing.sh";
print FILE "mmcblk[0-9] 0:0 664 \$ /etc/rb_removing.sh\n";
close FILE;
my $insert_sh = '
#!/bin/sh
# $MDEV is the device
case $MDEV in
mmc*)
MNT_POINT=/mnt/sd_0
;;
sd*)
MNT_POINT=/mnt/sd_0/USB
;;
esac
if [ ! -d $MNT_POINT ];then
mkdir $MNT_POINT
fi
mount $MDEV $MNT_POINT
';
open FILE, ">$rootfsdir/etc/rb_inserting.sh" || die("can't write hotplug helpers!");
print FILE $insert_sh;
close FILE;
chmod 0755, "$rootfsdir/etc/rb_inserting.sh";
my $remove_sh = '
#!/bin/sh
# $MDEV is the device
sync;
unmount -f $MDEV;
';
open FILE, ">$rootfsdir/etc/rb_removing.sh" || die("can't write hotplug helpers!");
print FILE $remove_sh;
close FILE;
chmod 0755, "$rootfsdir/etc/rb_removing.sh";
# Copy bootloader over
@sysargs=("cp", "$rbbname", "$rootfsdir/usr/bin/$rbbasename");

View file

@ -104,6 +104,8 @@ ifneq (,$(findstring bootloader,$(APPSDIR)))
include $(ROOTDIR)/firmware/target/hosted/agptek/rocker.make
else ifneq (,$(findstring xduoo,$(APP_TYPE)))
include $(ROOTDIR)/firmware/target/hosted/xduoo/xduoo.make
else ifneq (,$(findstring erosq,$(APP_TYPE)))
include $(ROOTDIR)/firmware/target/hosted/aigo/erosq.make
else ifneq (,$(findstring fiio,$(APP_TYPE)))
include $(ROOTDIR)/firmware/target/hosted/fiio/fiio.make
else
@ -156,6 +158,10 @@ else # core
include $(ROOTDIR)/firmware/target/hosted/fiio/fiio.make
endif
ifneq (,$(findstring erosq,$(APP_TYPE)))
include $(ROOTDIR)/firmware/target/hosted/aigo/erosq.make
endif
ifneq (,$(findstring android_ndk, $(APP_TYPE)))
include $(ROOTDIR)/firmware/target/hosted/ibasso/android_ndk.make
else

View file

@ -83,7 +83,7 @@ wps.800x480x(16|24): cabbiev2.800x480x16.wps
wps.480x800x(16|24): cabbiev2.480x800x16.wps
wps.400x240x(16|24): cabbiev2.400x240x16.wps
wps.320x480x(16|24): cabbiev2.320x480x16.wps
wps.320x240x(16|24): cabbiev2.320x240x16.wps
wps.320x240x(16|24|32): cabbiev2.320x240x16.wps
wps.240x400x(16|24): cabbiev2.240x400x16.wps
wps.240x320x(16|24|32): cabbiev2.240x320x16.wps
wps.220x176x(16|24): cabbiev2.220x176x16.wps
@ -171,7 +171,7 @@ iconset.800x480x(16|24): icons/tango_icons.32x32.bmp
iconset.480x800x(16|24): icons/tango_icons.32x32.bmp
iconset.400x240x(16|24): icons/tango_icons.16x16.bmp
iconset.320x480x(16|24): icons/tango_icons.24x24.bmp
iconset.320x240x(16|24): icons/tango_icons.16x16.bmp
iconset.320x240x(16|24|32): icons/tango_icons.16x16.bmp
iconset.128x128x(16|24): icons/tango_icons.12x12.bmp
iconset.128x160x(16|24|32): icons/tango_icons.12x12.bmp
iconset.132x80x(16|24): icons/tango_icons.12x12.bmp