ap80max: New hosted port
HibyOS-based target: keymaps, LED, powermgmt, bootloader and sim support, plus cabbiev2 for the new 360x640x16 screen. Opus 5 helped w/ debugging and the initial scaffolding. Updated name to FB_STRIDE_MISMATCH, added simulator bmp and specs. Change-Id: If797ac6581cf75d9d1fcf36e615ee03cf6f905d6
|
|
@ -304,4 +304,6 @@ keymaps/keymap-rgnano.c
|
|||
keymaps/keymap-ctru.c
|
||||
#elif CONFIG_KEYPAD == HIBY_R3PROII_PAD
|
||||
keymaps/keymap-hibyr3proii.c
|
||||
#elif CONFIG_KEYPAD == HIDIZS_AP80MAX_PAD
|
||||
keymaps/keymap-hidizsap80max.c
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -46,7 +46,7 @@ toolsicon.130x130x16.bmp
|
|||
hibyicon.70x70x16.bmp
|
||||
rockboxicon.70x70x16.bmp
|
||||
toolsicon.70x70x16.bmp
|
||||
#elif (defined(XDUOO_X3II) || defined(XDUOO_X20) || defined(EROS_Q) || defined(SURFANS_F28) || defined(HIBY_R3PROII) || defined(HIBY_R1))
|
||||
#elif (defined(XDUOO_X3II) || defined(XDUOO_X20) || defined(EROS_Q) || defined(SURFANS_F28) || defined(HIBY_R3PROII) || defined(HIBY_R1) || defined(HIDIZS_AP80MAX))
|
||||
hibyicon.130x130x16.bmp
|
||||
rockboxicon.130x130x16.bmp
|
||||
toolsicon.130x130x16.bmp
|
||||
|
|
|
|||
246
apps/keymaps/keymap-hidizsap80max.c
Normal file
|
|
@ -0,0 +1,246 @@
|
|||
/***************************************************************************
|
||||
* __________ __ ___
|
||||
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
|
||||
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
|
||||
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
|
||||
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
|
||||
* \/ \/ \/ \/ \/
|
||||
*
|
||||
* Copyright (C) 2025 Solomon Peachy
|
||||
* Copyright (C) 2026 by Jerry Shen
|
||||
*
|
||||
* 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 <stdio.h>
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "config.h"
|
||||
#include "action.h"
|
||||
#include "button.h"
|
||||
#include "settings.h"
|
||||
|
||||
static const struct button_mapping button_context_standard[] =
|
||||
{
|
||||
{ ACTION_STD_KEYLOCK, BUTTON_POWER|BUTTON_PLAY, BUTTON_POWER },
|
||||
|
||||
{ ACTION_STD_PREV, BUTTON_SCROLL_BACK, BUTTON_NONE },
|
||||
{ ACTION_STD_NEXT, BUTTON_SCROLL_FWD, BUTTON_NONE },
|
||||
|
||||
{ ACTION_STD_OK, BUTTON_POWER|BUTTON_REL, BUTTON_POWER },
|
||||
{ ACTION_STD_OK, BUTTON_NEXT|BUTTON_REL, BUTTON_NEXT },
|
||||
{ ACTION_STD_CANCEL, BUTTON_PREV|BUTTON_REL, BUTTON_PREV },
|
||||
|
||||
{ ACTION_STD_OK, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY },
|
||||
{ ACTION_STD_CONTEXT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_PLAY },
|
||||
|
||||
LAST_ITEM_IN_LIST
|
||||
};
|
||||
|
||||
|
||||
static const struct button_mapping button_context_wps[] =
|
||||
{
|
||||
{ ACTION_WPS_MENU, BUTTON_POWER|BUTTON_REL, BUTTON_POWER },
|
||||
{ ACTION_WPS_PLAY, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY },
|
||||
{ ACTION_WPS_STOP, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_NONE },
|
||||
{ ACTION_WPS_VOLDOWN, BUTTON_SCROLL_FWD, BUTTON_NONE },
|
||||
{ ACTION_WPS_VOLUP, BUTTON_SCROLL_BACK, BUTTON_NONE },
|
||||
{ ACTION_WPS_SKIPNEXT, BUTTON_NEXT|BUTTON_REL, BUTTON_NEXT },
|
||||
{ ACTION_WPS_SKIPPREV, BUTTON_PREV|BUTTON_REL, BUTTON_PREV },
|
||||
{ ACTION_WPS_SEEKFWD, BUTTON_NEXT|BUTTON_REPEAT, BUTTON_NONE },
|
||||
{ ACTION_WPS_STOPSEEK, BUTTON_NEXT|BUTTON_REL, BUTTON_NEXT|BUTTON_REPEAT },
|
||||
{ ACTION_WPS_SEEKBACK, BUTTON_PREV|BUTTON_REPEAT, BUTTON_NONE },
|
||||
{ ACTION_WPS_STOPSEEK, BUTTON_PREV|BUTTON_REL, BUTTON_PREV|BUTTON_REPEAT },
|
||||
{ ACTION_STD_KEYLOCK, BUTTON_POWER|BUTTON_PLAY, BUTTON_POWER },
|
||||
|
||||
LAST_ITEM_IN_LIST
|
||||
};
|
||||
|
||||
|
||||
static const struct button_mapping button_context_list[] =
|
||||
{
|
||||
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD),
|
||||
};
|
||||
|
||||
|
||||
static const struct button_mapping button_context_tree[] =
|
||||
{
|
||||
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST),
|
||||
};
|
||||
|
||||
|
||||
static const struct button_mapping button_context_listtree_scroll_with_combo[] =
|
||||
{
|
||||
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_CUSTOM | CONTEXT_TREE),
|
||||
};
|
||||
|
||||
|
||||
static const struct button_mapping button_context_listtree_scroll_without_combo[] =
|
||||
{
|
||||
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_CUSTOM | CONTEXT_TREE),
|
||||
};
|
||||
|
||||
|
||||
static const struct button_mapping button_context_settings[] =
|
||||
{
|
||||
{ ACTION_SETTINGS_DEC, BUTTON_SCROLL_FWD, BUTTON_NONE },
|
||||
{ ACTION_SETTINGS_INC, BUTTON_SCROLL_BACK, BUTTON_NONE },
|
||||
{ ACTION_SETTINGS_INC, BUTTON_NEXT, BUTTON_NONE },
|
||||
{ ACTION_SETTINGS_DEC, BUTTON_PREV, BUTTON_NONE },
|
||||
|
||||
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD),
|
||||
};
|
||||
|
||||
|
||||
static const struct button_mapping button_context_settings_right_is_inc[] =
|
||||
{
|
||||
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD),
|
||||
};
|
||||
|
||||
|
||||
static const struct button_mapping button_context_mainmenu[] =
|
||||
{
|
||||
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_TREE),
|
||||
};
|
||||
|
||||
|
||||
static const struct button_mapping button_context_yesno[] =
|
||||
{
|
||||
{ ACTION_YESNO_ACCEPT, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY },
|
||||
{ ACTION_YESNO_ACCEPT, BUTTON_POWER|BUTTON_REL, BUTTON_POWER },
|
||||
{ ACTION_STD_CANCEL, BUTTON_PREV|BUTTON_REL, BUTTON_PREV },
|
||||
|
||||
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD),
|
||||
};
|
||||
|
||||
|
||||
static const struct button_mapping button_context_colorchooser[] =
|
||||
{
|
||||
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_SETTINGS),
|
||||
};
|
||||
|
||||
|
||||
static const struct button_mapping button_context_eq[] =
|
||||
{
|
||||
{ ACTION_SETTINGS_INCBIGSTEP, BUTTON_PLAY|BUTTON_SCROLL_BACK, BUTTON_NONE },
|
||||
{ ACTION_SETTINGS_DECBIGSTEP, BUTTON_PLAY|BUTTON_SCROLL_FWD, BUTTON_NONE },
|
||||
|
||||
{ ACTION_SETTINGS_INC, BUTTON_SCROLL_BACK, BUTTON_NONE },
|
||||
{ ACTION_SETTINGS_DEC, BUTTON_SCROLL_FWD, BUTTON_NONE },
|
||||
|
||||
{ ACTION_NONE, BUTTON_PREV, BUTTON_NONE },
|
||||
{ ACTION_NONE, BUTTON_NEXT, BUTTON_NONE },
|
||||
{ ACTION_STD_PREV, BUTTON_PREV|BUTTON_REL, BUTTON_PREV },
|
||||
{ ACTION_STD_PREVREPEAT, BUTTON_PREV|BUTTON_REPEAT, BUTTON_NONE },
|
||||
{ ACTION_STD_NEXT, BUTTON_NEXT|BUTTON_REL, BUTTON_NEXT },
|
||||
{ ACTION_STD_NEXTREPEAT, BUTTON_NEXT|BUTTON_REPEAT, BUTTON_NONE },
|
||||
|
||||
{ ACTION_STD_OK, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY },
|
||||
{ ACTION_STD_CANCEL, BUTTON_POWER|BUTTON_REL, BUTTON_POWER },
|
||||
|
||||
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_SETTINGS),
|
||||
};
|
||||
|
||||
|
||||
static const struct button_mapping button_context_keyboard[] =
|
||||
{
|
||||
{ ACTION_KBD_LEFT, BUTTON_SCROLL_BACK, BUTTON_NONE },
|
||||
{ ACTION_KBD_RIGHT, BUTTON_SCROLL_FWD, BUTTON_NONE },
|
||||
{ ACTION_KBD_CURSOR_LEFT, BUTTON_PLAY | BUTTON_SCROLL_BACK, BUTTON_NONE },
|
||||
{ ACTION_KBD_CURSOR_RIGHT, BUTTON_PLAY | BUTTON_SCROLL_FWD, BUTTON_NONE },
|
||||
{ ACTION_KBD_DONE, BUTTON_PLAY | BUTTON_REPEAT, BUTTON_NONE },
|
||||
{ ACTION_KBD_SELECT, BUTTON_PLAY | BUTTON_REL, BUTTON_NONE },
|
||||
{ ACTION_KBD_ABORT, BUTTON_POWER, BUTTON_NONE },
|
||||
{ ACTION_KBD_UP, BUTTON_NEXT, BUTTON_NONE },
|
||||
{ ACTION_KBD_UP, BUTTON_NEXT | BUTTON_REPEAT, BUTTON_NONE },
|
||||
{ ACTION_KBD_DOWN, BUTTON_PREV, BUTTON_NONE },
|
||||
{ ACTION_KBD_DOWN, BUTTON_PREV | BUTTON_REPEAT, BUTTON_NONE },
|
||||
|
||||
LAST_ITEM_IN_LIST
|
||||
};
|
||||
|
||||
|
||||
static const struct button_mapping button_context_bmark[] =
|
||||
{
|
||||
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST),
|
||||
};
|
||||
|
||||
|
||||
static const struct button_mapping button_context_time[] =
|
||||
{
|
||||
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_SETTINGS),
|
||||
};
|
||||
|
||||
|
||||
static const struct button_mapping button_context_quickscreen[] =
|
||||
{
|
||||
{ ACTION_QS_TOP, BUTTON_SCROLL_BACK, BUTTON_NONE },
|
||||
{ ACTION_QS_DOWN, BUTTON_SCROLL_FWD, BUTTON_NONE },
|
||||
{ ACTION_QS_LEFT, BUTTON_PREV|BUTTON_REL, BUTTON_NONE },
|
||||
{ ACTION_QS_LEFT, BUTTON_PREV|BUTTON_REPEAT, BUTTON_NONE },
|
||||
{ ACTION_QS_RIGHT, BUTTON_NEXT|BUTTON_REL, BUTTON_NONE },
|
||||
{ ACTION_QS_RIGHT, BUTTON_NEXT|BUTTON_REPEAT, BUTTON_NONE },
|
||||
|
||||
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
|
||||
};
|
||||
|
||||
|
||||
static const struct button_mapping button_context_pitchscreen[] =
|
||||
{
|
||||
{ ACTION_PS_DEC_SMALL, BUTTON_SCROLL_FWD, BUTTON_NONE },
|
||||
{ ACTION_PS_INC_SMALL, BUTTON_SCROLL_BACK, BUTTON_NONE },
|
||||
{ ACTION_PS_NUDGE_RIGHT, BUTTON_NEXT, BUTTON_NONE },
|
||||
{ ACTION_PS_NUDGE_LEFT, BUTTON_PREV, BUTTON_NONE },
|
||||
{ ACTION_PS_EXIT, BUTTON_POWER, BUTTON_NONE },
|
||||
|
||||
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
|
||||
};
|
||||
|
||||
|
||||
static const struct button_mapping button_context_radio[] =
|
||||
{
|
||||
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_SETTINGS)
|
||||
};
|
||||
|
||||
|
||||
const struct button_mapping* target_get_context_mapping(int context)
|
||||
{
|
||||
switch (context & ~CONTEXT_LOCKED)
|
||||
{
|
||||
case CONTEXT_STD: { return button_context_standard; }
|
||||
case CONTEXT_WPS: { return button_context_wps; }
|
||||
case CONTEXT_LIST: { return button_context_list; }
|
||||
case CONTEXT_MAINMENU: { return button_context_mainmenu; }
|
||||
case CONTEXT_CUSTOM | CONTEXT_TREE: { return button_context_tree; }
|
||||
case CONTEXT_SETTINGS: { return button_context_settings; }
|
||||
case CONTEXT_SETTINGS_COLOURCHOOSER: { return button_context_colorchooser; }
|
||||
case CONTEXT_SETTINGS_EQ: { return button_context_eq; }
|
||||
case CONTEXT_SETTINGS_TIME: { return button_context_time; }
|
||||
case CONTEXT_YESNOSCREEN: { return button_context_yesno; }
|
||||
case CONTEXT_KEYBOARD: { return button_context_keyboard; }
|
||||
case CONTEXT_FM: { return button_context_radio; }
|
||||
case CONTEXT_BOOKMARKSCREEN: { return button_context_bmark; }
|
||||
case CONTEXT_QUICKSCREEN: { return button_context_quickscreen; }
|
||||
case CONTEXT_PITCHSCREEN: { return button_context_pitchscreen; }
|
||||
case CONTEXT_CUSTOM | CONTEXT_SETTINGS:
|
||||
case CONTEXT_SETTINGS_RECTRIGGER: { return button_context_settings_right_is_inc; }
|
||||
case CONTEXT_TREE:
|
||||
{
|
||||
if(global_settings.hold_lr_for_scroll_in_list)
|
||||
{
|
||||
return button_context_listtree_scroll_without_combo;
|
||||
}
|
||||
return button_context_listtree_scroll_with_combo;
|
||||
}
|
||||
}
|
||||
|
||||
return button_context_standard;
|
||||
}
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
#if !defined(HAVE_TOUCHSCREEN) || defined(DX50) || defined(DX90) || defined(HIBY_R3PROII) || defined(HIBY_R1)
|
||||
#if !defined(HAVE_TOUCHSCREEN) || defined(DX50) || defined(DX90) || defined(HIBY_R3PROII) || defined(HIBY_R1) || defined(HIDIZS_AP80MAX)
|
||||
/* In devices running RockBox as an application, but having a keypad */
|
||||
#include "SOURCES"
|
||||
#else
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
#if !defined(HAVE_TOUCHSCREEN) || defined(DX50) || defined(DX90) || defined(HIBY_R3PROII) || defined(HIBY_R1)
|
||||
#if !defined(HAVE_TOUCHSCREEN) || defined(DX50) || defined(DX90) || defined(HIBY_R3PROII) || defined(HIBY_R1) || defined(HIDIZS_AP80MAX)
|
||||
/* This is for devices having a keypad, running RockBox as an application */
|
||||
#include "SUBDIRS"
|
||||
|
||||
|
|
|
|||
|
|
@ -243,7 +243,7 @@ struct battery_tables_t {
|
|||
#define BATTERY_ON_TXT "Play"
|
||||
#define BATTERY_OFF_TXT "Power"
|
||||
|
||||
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD
|
||||
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD || CONFIG_KEYPAD == HIDIZS_AP80MAX_PAD
|
||||
/* use touchscreen */
|
||||
|
||||
#elif CONFIG_KEYPAD == MA_PAD
|
||||
|
|
|
|||
|
|
@ -21,7 +21,8 @@ bubbles_bubble.220x176x1.bmp
|
|||
#elif ((LCD_WIDTH == 240) && (LCD_HEIGHT == 240)) || \
|
||||
((LCD_WIDTH == 320) && (LCD_HEIGHT == 240)) || \
|
||||
((LCD_WIDTH == 240) && (LCD_HEIGHT >= 320)) || \
|
||||
((LCD_WIDTH == 360) && (LCD_HEIGHT == 400))
|
||||
((LCD_WIDTH == 360) && (LCD_HEIGHT == 400)) || \
|
||||
((LCD_WIDTH == 360) && (LCD_HEIGHT == 640))
|
||||
bubbles_bubble.320x240x1.bmp
|
||||
#elif ((LCD_WIDTH == 640) && (LCD_HEIGHT == 480)) || \
|
||||
((LCD_WIDTH == 480) && (LCD_HEIGHT >= 640))
|
||||
|
|
|
|||
|
|
@ -438,7 +438,7 @@ invadrox_ufo_explode.21x8x16.bmp
|
|||
invadrox_numbers.50x7x16.bmp
|
||||
#if LCD_WIDTH == 480
|
||||
invadrox_background.480x640x16.bmp
|
||||
#elif LCD_WIDTH == 360 && LCD_HEIGHT == 400
|
||||
#elif LCD_WIDTH == 360 && (LCD_HEIGHT == 400 || LCD_HEIGHT == 640)
|
||||
invadrox_background.360x400x16.bmp
|
||||
#elif LCD_WIDTH == 320
|
||||
invadrox_background.320x240x16.bmp
|
||||
|
|
@ -513,7 +513,7 @@ jewels.240x240x16.bmp
|
|||
jewels.320x240x16.bmp
|
||||
#elif (LCD_WIDTH == 320) && (LCD_HEIGHT == 240)
|
||||
jewels.320x240x16.bmp
|
||||
#elif (LCD_WIDTH == 360) && (LCD_HEIGHT == 400)
|
||||
#elif (LCD_WIDTH == 360) && ((LCD_HEIGHT == 400) || (LCD_HEIGHT == 640))
|
||||
jewels.360x400x16.bmp
|
||||
#elif ((LCD_WIDTH >= 480) && (LCD_HEIGHT >= 640)) || \
|
||||
((LCD_WIDTH >= 640) && (LCD_HEIGHT >= 480))
|
||||
|
|
@ -947,7 +947,8 @@ superdom_boarditems.176x132x16.bmp
|
|||
superdom_boarditems.320x240x16.bmp
|
||||
#elif ((LCD_WIDTH == 240) && (LCD_HEIGHT == 320)) || \
|
||||
((LCD_WIDTH == 240) && (LCD_HEIGHT == 400)) || \
|
||||
((LCD_WIDTH == 360) && (LCD_HEIGHT == 400))
|
||||
((LCD_WIDTH == 360) && (LCD_HEIGHT == 400)) || \
|
||||
((LCD_WIDTH == 360) && (LCD_HEIGHT == 640))
|
||||
superdom_boarditems.240x320x16.bmp
|
||||
#elif (LCD_WIDTH >= 480 && LCD_HEIGHT >= 640)
|
||||
superdom_boarditems.480x640x16.bmp
|
||||
|
|
|
|||
|
|
@ -591,7 +591,7 @@ enum {
|
|||
#define BJACK_LEFT BUTTON_LEFT
|
||||
|
||||
|
||||
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD
|
||||
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD || CONFIG_KEYPAD == HIDIZS_AP80MAX_PAD
|
||||
#define BJACK_QUIT BUTTON_POWER
|
||||
#define BJACK_QUIT_NAME "QUIT"
|
||||
|
||||
|
|
|
|||
|
|
@ -353,7 +353,7 @@ CONFIG_KEYPAD == SANSA_M200_PAD
|
|||
#define UP BUTTON_UP
|
||||
#define DOWN BUTTON_DOWN
|
||||
|
||||
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD
|
||||
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD || CONFIG_KEYPAD == HIDIZS_AP80MAX_PAD
|
||||
#define QUIT BUTTON_POWER
|
||||
|
||||
#elif CONFIG_KEYPAD == MA_PAD
|
||||
|
|
|
|||
|
|
@ -138,6 +138,17 @@ enum {
|
|||
#define XOFS 128
|
||||
#define MAX_FPS 40
|
||||
|
||||
#elif (LCD_WIDTH == 360) && (LCD_HEIGHT == 640)
|
||||
#define XOFS 86
|
||||
#define YOFS 220
|
||||
#define SCORE_TXT_X 28
|
||||
#define SCORE_TXT_WIDTH 32
|
||||
#define SCORE_TXT_Y 48
|
||||
#define LEVEL_TXT_X 27
|
||||
#define LEVEL_TXT_WIDTH 32
|
||||
#define LEVEL_TXT_Y 5
|
||||
#define MAX_FPS 40
|
||||
|
||||
#elif (LCD_WIDTH == 360) && (LCD_HEIGHT == 400)
|
||||
#define XOFS 86
|
||||
#define YOFS 100
|
||||
|
|
|
|||
|
|
@ -522,7 +522,7 @@ F3: equal to "="
|
|||
#define CALCULATOR_CALC BUTTON_MENU
|
||||
#define CALCULATOR_CLEAR BUTTON_BACK
|
||||
|
||||
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD
|
||||
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD || CONFIG_KEYPAD == HIDIZS_AP80MAX_PAD
|
||||
#define CALCULATOR_QUIT BUTTON_POWER
|
||||
|
||||
#elif CONFIG_KEYPAD == MA_PAD
|
||||
|
|
|
|||
|
|
@ -408,7 +408,7 @@
|
|||
#define CALENDAR_NEXT_MONTH BUTTON_VOL_UP
|
||||
#define CALENDAR_PREV_MONTH BUTTON_VOL_DOWN
|
||||
|
||||
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD
|
||||
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD || CONFIG_KEYPAD == HIDIZS_AP80MAX_PAD
|
||||
/* use touchscreen */
|
||||
|
||||
#elif CONFIG_KEYPAD == MA_PAD
|
||||
|
|
|
|||
|
|
@ -566,7 +566,7 @@
|
|||
#define CB_SCROLL_LEFT (BUTTON_LEFT|BUTTON_REPEAT)
|
||||
#define CB_SCROLL_RIGHT (BUTTON_RIGHT|BUTTON_REPEAT)
|
||||
|
||||
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD
|
||||
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD || CONFIG_KEYPAD == HIDIZS_AP80MAX_PAD
|
||||
/* use touchscreen */
|
||||
|
||||
#elif CONFIG_KEYPAD == MA_PAD
|
||||
|
|
|
|||
|
|
@ -384,7 +384,7 @@
|
|||
#define CHC_SETTINGS_OK BUTTON_SELECT
|
||||
#define CHC_SETTINGS_CANCEL BUTTON_POWER
|
||||
|
||||
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD
|
||||
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD || CONFIG_KEYPAD == HIDIZS_AP80MAX_PAD
|
||||
#define CHC_QUIT BUTTON_POWER
|
||||
|
||||
#elif (CONFIG_KEYPAD == MA_PAD)
|
||||
|
|
|
|||
|
|
@ -1326,7 +1326,7 @@ CONFIG_KEYPAD == MROBE500_PAD
|
|||
#define CHIP8_KEY9 BUTTON_START
|
||||
#define CHIP8_KEYA BUTTON_X
|
||||
|
||||
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD
|
||||
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD || CONFIG_KEYPAD == HIDIZS_AP80MAX_PAD
|
||||
/* use touchscreen */
|
||||
|
||||
#else
|
||||
|
|
|
|||
|
|
@ -305,7 +305,7 @@
|
|||
#define CLIX_BUTTON_RIGHT BUTTON_RIGHT
|
||||
#define CLIX_BUTTON_CLICK BUTTON_SELECT
|
||||
|
||||
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD
|
||||
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD || CONFIG_KEYPAD == HIDIZS_AP80MAX_PAD
|
||||
#define CLIX_BUTTON_QUIT BUTTON_POWER
|
||||
|
||||
#elif CONFIG_KEYPAD == MA_PAD
|
||||
|
|
|
|||
|
|
@ -391,7 +391,7 @@
|
|||
#define CUBE_PAUSE BUTTON_PLAY
|
||||
#define CUBE_HIGHSPEED BUTTON_BACK
|
||||
|
||||
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD
|
||||
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD || CONFIG_KEYPAD == HIDIZS_AP80MAX_PAD
|
||||
/* use touchscreen */
|
||||
|
||||
#elif CONFIG_KEYPAD == MA_PAD
|
||||
|
|
|
|||
|
|
@ -616,7 +616,7 @@ void I_ShutdownGraphics(void)
|
|||
#define DOOMBUTTON_WEAPON BUTTON_BACK
|
||||
#define DOOMBUTTON_MAP (BUTTON_BACK|BUTTON_REPEAT)
|
||||
|
||||
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD
|
||||
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD || CONFIG_KEYPAD == HIDIZS_AP80MAX_PAD
|
||||
#define DOOMBUTTON_ESC BUTTON_POWER
|
||||
#define DOOMBUTTON_MAP BUTTON_PREV
|
||||
|
||||
|
|
|
|||
|
|
@ -481,7 +481,7 @@
|
|||
#define FLIPIT_STEP_BY_STEP BUTTON_VOL_UP
|
||||
#define FLIPIT_TOGGLE BUTTON_SELECT
|
||||
|
||||
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD
|
||||
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD || CONFIG_KEYPAD == HIDIZS_AP80MAX_PAD
|
||||
/* use touchscreen */
|
||||
|
||||
#elif CONFIG_KEYPAD == MA_PAD
|
||||
|
|
|
|||
|
|
@ -491,7 +491,7 @@
|
|||
#define FRACTAL_PRECISION_DEC BUTTON_BACK
|
||||
#define FRACTAL_RESET BUTTON_PLAY
|
||||
|
||||
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD
|
||||
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD || CONFIG_KEYPAD == HIDIZS_AP80MAX_PAD
|
||||
#define FRACTAL_QUIT BUTTON_POWER
|
||||
|
||||
#elif CONFIG_KEYPAD == MA_PAD
|
||||
|
|
|
|||
|
|
@ -544,7 +544,7 @@
|
|||
#define IMGVIEW_MENU (BUTTON_PLAY|BUTTON_REPEAT)
|
||||
#define IMGVIEW_SLIDE_SHOW BUTTON_PLAY
|
||||
|
||||
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD
|
||||
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD || CONFIG_KEYPAD == HIDIZS_AP80MAX_PAD
|
||||
/* use touchscreen */
|
||||
|
||||
#elif CONFIG_KEYPAD == RG_NANO_PAD
|
||||
|
|
|
|||
|
|
@ -280,7 +280,7 @@ CONFIG_KEYPAD == MROBE500_PAD
|
|||
#define RIGHT BUTTON_RIGHT
|
||||
#define FIRE BUTTON_SELECT
|
||||
|
||||
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD
|
||||
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD || CONFIG_KEYPAD == HIDIZS_AP80MAX_PAD
|
||||
/* use touchscreen */
|
||||
|
||||
#elif CONFIG_KEYPAD == MA_PAD
|
||||
|
|
@ -687,6 +687,24 @@ CONFIG_KEYPAD == MROBE500_PAD
|
|||
#define LIVES_X 8
|
||||
#define MAX_Y 15
|
||||
|
||||
#elif (LCD_WIDTH == 360) && (LCD_HEIGHT == 640)
|
||||
|
||||
/* Hidizs AP80 Pro Max
|
||||
*/
|
||||
#define ARCADISH_GRAPHICS
|
||||
#define PLAYFIELD_X 32
|
||||
#define SHIP_Y (PLAYFIELD_Y - 3 * SHIP_HEIGHT)
|
||||
#define ALIEN_START_Y (UFO_Y + 3 * ALIEN_HEIGHT)
|
||||
/* Redefine SCORE_Y */
|
||||
#undef SCORE_Y
|
||||
#define SCORE_Y 80
|
||||
#define SCORENUM_X (PLAYFIELD_X + NUMBERS_WIDTH)
|
||||
#define SCORENUM_Y SCORE_Y + (2 * (FONT_HEIGHT + 1) + 1)
|
||||
#define HISCORENUM_X (LCD_WIDTH - PLAYFIELD_X - 1 - 6 * NUMBERS_WIDTH - 5 * NUM_SPACING)
|
||||
#define SHIELD_Y (PLAYFIELD_Y - 6 * SHIP_HEIGHT)
|
||||
#define LIVES_X 10
|
||||
#define MAX_Y 30
|
||||
|
||||
#elif (LCD_WIDTH == 360) && (LCD_HEIGHT == 400)
|
||||
|
||||
/* Shanling Q1
|
||||
|
|
|
|||
|
|
@ -366,7 +366,7 @@ CONFIG_KEYPAD == MROBE500_PAD
|
|||
#define HK_SELECT "SELECT"
|
||||
#define HK_CANCEL "BACK"
|
||||
|
||||
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD
|
||||
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD || CONFIG_KEYPAD == HIDIZS_AP80MAX_PAD
|
||||
/* use touchscreen */
|
||||
|
||||
#elif CONFIG_KEYPAD == MA_PAD
|
||||
|
|
|
|||
|
|
@ -249,7 +249,7 @@
|
|||
#define BTN_FIRE BUTTON_SELECT
|
||||
#define BTN_PAUSE BUTTON_POWER
|
||||
|
||||
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD
|
||||
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD || CONFIG_KEYPAD == HIDIZS_AP80MAX_PAD
|
||||
#define BTN_FIRE BUTTON_CENTER
|
||||
#define BTN_PAUSE BUTTON_POWER
|
||||
#define BTN_HAVE_DIAGONAL
|
||||
|
|
@ -318,6 +318,7 @@
|
|||
(CONFIG_KEYPAD != CREATIVE_ZENXFI2_PAD) && \
|
||||
(CONFIG_KEYPAD != SHANLING_Q1_PAD) && \
|
||||
(CONFIG_KEYPAD != HIBY_R3PROII_PAD) && \
|
||||
(CONFIG_KEYPAD != HIDIZS_AP80MAX_PAD) && \
|
||||
(CONFIG_KEYPAD != CTRU_PAD)
|
||||
#define BTN_FIRE BUTTON_BOTTOMLEFT
|
||||
#define BTN_PAUSE BUTTON_TOPLEFT
|
||||
|
|
|
|||
|
|
@ -529,7 +529,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 == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD)
|
||||
#elif (CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD || CONFIG_KEYPAD == HIDIZS_AP80MAX_PAD)
|
||||
{PLA_EXIT, BUTTON_POWER, BUTTON_NONE},
|
||||
#elif (CONFIG_KEYPAD == MA_PAD)
|
||||
{PLA_CANCEL, BUTTON_BACK|BUTTON_REL, BUTTON_BACK},
|
||||
|
|
|
|||
|
|
@ -316,7 +316,7 @@
|
|||
#define MIDI_VOL_DOWN BUTTON_VOL_DOWN
|
||||
#define MIDI_PLAYPAUSE BUTTON_PLAY
|
||||
|
||||
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD
|
||||
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD || CONFIG_KEYPAD == HIDIZS_AP80MAX_PAD
|
||||
/* use touchscreen */
|
||||
|
||||
#elif CONFIG_KEYPAD == MA_PAD
|
||||
|
|
|
|||
|
|
@ -441,7 +441,7 @@ CONFIG_KEYPAD == MROBE500_PAD
|
|||
# define MINESWP_DISCOVER (BUTTON_MENU|BUTTON_REPEAT)
|
||||
# define MINESWP_INFO BUTTON_MENU
|
||||
|
||||
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD
|
||||
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD || CONFIG_KEYPAD == HIDIZS_AP80MAX_PAD
|
||||
/* use touchscreen */
|
||||
|
||||
#elif CONFIG_KEYPAD == RG_NANO_PAD
|
||||
|
|
|
|||
|
|
@ -2578,7 +2578,7 @@ CONFIG_KEYPAD == MROBE500_PAD
|
|||
#define MP3ENC_DONE BUTTON_POWER
|
||||
#define MP3ENC_SELECT BUTTON_SELECT
|
||||
|
||||
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD
|
||||
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD || CONFIG_KEYPAD == HIDIZS_AP80MAX_PAD
|
||||
/* use touchscreen */
|
||||
|
||||
#elif CONFIG_KEYPAD == MA_PAD
|
||||
|
|
|
|||
|
|
@ -352,7 +352,7 @@ struct mpeg_settings settings;
|
|||
#define MPEG_START_TIME_DOWN BUTTON_DOWN
|
||||
#define MPEG_START_TIME_EXIT BUTTON_BACK
|
||||
|
||||
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD
|
||||
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD || CONFIG_KEYPAD == HIDIZS_AP80MAX_PAD
|
||||
#define MPEG_START_TIME_EXIT BUTTON_POWER
|
||||
|
||||
#elif CONFIG_KEYPAD == RG_NANO_PAD
|
||||
|
|
|
|||
|
|
@ -485,7 +485,7 @@ CONFIG_KEYPAD == SANSA_M200_PAD
|
|||
#define MPEG_RW BUTTON_LEFT
|
||||
#define MPEG_FF BUTTON_RIGHT
|
||||
|
||||
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD
|
||||
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD || CONFIG_KEYPAD == HIDIZS_AP80MAX_PAD
|
||||
/* use touchscreen */
|
||||
|
||||
#elif CONFIG_KEYPAD == RG_NANO_PAD
|
||||
|
|
|
|||
|
|
@ -549,7 +549,7 @@
|
|||
#define OSCILLOSCOPE_VOL_UP BUTTON_UP
|
||||
#define OSCILLOSCOPE_VOL_DOWN BUTTON_DOWN
|
||||
|
||||
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD
|
||||
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD || CONFIG_KEYPAD == HIDIZS_AP80MAX_PAD
|
||||
/* use touchscreen */
|
||||
|
||||
#elif CONFIG_KEYPAD == RG_NANO_PAD
|
||||
|
|
|
|||
|
|
@ -386,7 +386,7 @@
|
|||
#define PACMAN_1UP BUTTON_VOL_UP
|
||||
#define PACMAN_COIN BUTTON_PLAY
|
||||
|
||||
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD
|
||||
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD || CONFIG_KEYPAD == HIDIZS_AP80MAX_PAD
|
||||
#define PACMAN_UP BUTTON_TOPMIDDLE
|
||||
#define PACMAN_DOWN BUTTON_BOTTOMMIDDLE
|
||||
#define PACMAN_LEFT BUTTON_MIDLEFT
|
||||
|
|
|
|||
|
|
@ -710,7 +710,7 @@ CONFIG_KEYPAD == MROBE500_PAD
|
|||
#define LVL_UP_TEXT "UP+MENU"
|
||||
#define LVL_DOWN_TEXT "DOWN+MENU"
|
||||
|
||||
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD
|
||||
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD || CONFIG_KEYPAD == HIDIZS_AP80MAX_PAD
|
||||
/* use touchscreen */
|
||||
|
||||
#elif CONFIG_KEYPAD == RG_NANO_PAD
|
||||
|
|
|
|||
|
|
@ -317,7 +317,7 @@ CONFIG_KEYPAD == MROBE500_PAD
|
|||
#define PONG_RIGHT_UP BUTTON_BACK
|
||||
#define PONG_RIGHT_DOWN BUTTON_RIGHT
|
||||
|
||||
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD
|
||||
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD || CONFIG_KEYPAD == HIDIZS_AP80MAX_PAD
|
||||
/* use touchscreen */
|
||||
|
||||
#elif CONFIG_KEYPAD == MA_PAD
|
||||
|
|
|
|||
|
|
@ -351,7 +351,7 @@
|
|||
#define REVERSI_BUTTON_MAKE_MOVE BUTTON_SELECT
|
||||
#define REVERSI_BUTTON_MENU BUTTON_MENU
|
||||
|
||||
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD
|
||||
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD || CONFIG_KEYPAD == HIDIZS_AP80MAX_PAD
|
||||
/* use touchscreen */
|
||||
|
||||
#elif (CONFIG_KEYPAD == MA_PAD)
|
||||
|
|
|
|||
|
|
@ -457,7 +457,7 @@
|
|||
#define ROCKBLOX_RESTART BUTTON_BACK
|
||||
#define ROCKBLOX_SCROLL_ENABLED 1
|
||||
|
||||
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD
|
||||
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD || CONFIG_KEYPAD == HIDIZS_AP80MAX_PAD
|
||||
/* use touchscreen */
|
||||
|
||||
#elif CONFIG_KEYPAD == MA_PAD
|
||||
|
|
@ -576,6 +576,23 @@
|
|||
#define LEVEL_Y 142
|
||||
#define LINES_Y 218
|
||||
|
||||
#elif (LCD_WIDTH == 360) && (LCD_HEIGHT == 640)
|
||||
|
||||
/* 10x20 board of 24px blocks = 240x480, leaving a 100px label column */
|
||||
#define BLOCK_WIDTH 24
|
||||
#define BLOCK_HEIGHT 24
|
||||
#define BOARD_X 8
|
||||
#define BOARD_Y 40
|
||||
#define LABEL_X 258
|
||||
#define SCORE_Y 60
|
||||
#define LEVEL_Y 140
|
||||
#define LINES_Y 220
|
||||
#define HIGH_LABEL_X 258
|
||||
#define HIGH_SCORE_Y 320
|
||||
#define HIGH_LEVEL_Y 400
|
||||
#define PREVIEW_X 258
|
||||
#define PREVIEW_Y 480
|
||||
|
||||
#elif (LCD_WIDTH == 360) && (LCD_HEIGHT == 400)
|
||||
|
||||
#define BLOCK_WIDTH 19
|
||||
|
|
|
|||
|
|
@ -457,7 +457,7 @@ static void setoptions (void)
|
|||
options.SELECT = BUTTON_VOL_UP;
|
||||
options.MENU = BUTTON_POWER;
|
||||
|
||||
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD
|
||||
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD || CONFIG_KEYPAD == HIDIZS_AP80MAX_PAD
|
||||
/* use touchscreen */
|
||||
|
||||
#elif CONFIG_KEYPAD == MA_PAD
|
||||
|
|
|
|||
|
|
@ -392,7 +392,7 @@
|
|||
#define ROCKPAINT_LEFT BUTTON_LEFT
|
||||
#define ROCKPAINT_RIGHT BUTTON_RIGHT
|
||||
|
||||
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD
|
||||
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD || CONFIG_KEYPAD == HIDIZS_AP80MAX_PAD
|
||||
/* use touchscreen */
|
||||
|
||||
#elif CONFIG_KEYPAD == EROSQ_PAD
|
||||
|
|
|
|||
|
|
@ -347,7 +347,7 @@ CONFIG_KEYPAD == MROBE500_PAD
|
|||
#define PUZZLE_SHUFFLE BUTTON_BACK
|
||||
#define PUZZLE_PICTURE BUTTON_PLAY
|
||||
|
||||
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD
|
||||
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD || CONFIG_KEYPAD == HIDIZS_AP80MAX_PAD
|
||||
/* use touchscreen */
|
||||
|
||||
#elif CONFIG_KEYPAD == MA_PAD
|
||||
|
|
|
|||
|
|
@ -304,7 +304,7 @@ dir is the current direction of the snake - 0=up, 1=right, 2=down, 3=left;
|
|||
#define SNAKE_DOWN BUTTON_DOWN
|
||||
#define SNAKE_PLAYPAUSE BUTTON_PLAY
|
||||
|
||||
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD
|
||||
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD || CONFIG_KEYPAD == HIDIZS_AP80MAX_PAD
|
||||
/* use touchscreen */
|
||||
|
||||
#elif CONFIG_KEYPAD == MA_PAD
|
||||
|
|
|
|||
|
|
@ -448,7 +448,7 @@ CONFIG_KEYPAD == MROBE500_PAD
|
|||
#define SNAKE2_PLAYPAUSE BUTTON_PLAY
|
||||
#define SNAKE2_PLAYPAUSE_TEXT "PLAY"
|
||||
|
||||
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD
|
||||
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD || CONFIG_KEYPAD == HIDIZS_AP80MAX_PAD
|
||||
/* use touchscreen */
|
||||
|
||||
#elif CONFIG_KEYPAD == MA_PAD
|
||||
|
|
|
|||
|
|
@ -680,7 +680,7 @@
|
|||
#define BUTTON_SAVE BUTTON_BACK
|
||||
#define BUTTON_SAVE_NAME "BACK"
|
||||
|
||||
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD
|
||||
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD || CONFIG_KEYPAD == HIDIZS_AP80MAX_PAD
|
||||
/* use touchscreen */
|
||||
|
||||
#elif CONFIG_KEYPAD == MA_PAD
|
||||
|
|
|
|||
|
|
@ -722,7 +722,7 @@ CONFIG_KEYPAD == MROBE500_PAD
|
|||
# define HK_CUR2STACK "HOLD SELECT"
|
||||
# define HK_REM2STACK "VOL+"
|
||||
|
||||
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD
|
||||
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD || CONFIG_KEYPAD == HIDIZS_AP80MAX_PAD
|
||||
# define SOL_QUIT BUTTON_POWER
|
||||
|
||||
#elif CONFIG_KEYPAD == RG_NANO_PAD
|
||||
|
|
|
|||
|
|
@ -362,7 +362,7 @@
|
|||
#define AST_RIGHT BUTTON_RIGHT
|
||||
#define AST_FIRE BUTTON_PLAY
|
||||
|
||||
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD
|
||||
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD || CONFIG_KEYPAD == HIDIZS_AP80MAX_PAD
|
||||
/* use touchscreen */
|
||||
|
||||
#elif CONFIG_KEYPAD == MA_PAD
|
||||
|
|
|
|||
|
|
@ -650,7 +650,7 @@
|
|||
#define STAR_LEVEL_DOWN_NAME "VOL-"
|
||||
#define STAR_LEVEL_REPEAT_NAME "BACK"
|
||||
|
||||
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD
|
||||
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD || CONFIG_KEYPAD == HIDIZS_AP80MAX_PAD
|
||||
#define STAR_QUIT BUTTON_POWER
|
||||
#define STAR_QUIT_NAME "POWER"
|
||||
|
||||
|
|
|
|||
|
|
@ -458,7 +458,7 @@
|
|||
#define SUDOKU_BUTTON_TOGGLE BUTTON_PLAY
|
||||
#define SUDOKU_BUTTON_POSSIBLE BUTTON_BACK
|
||||
|
||||
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD
|
||||
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD || CONFIG_KEYPAD == HIDIZS_AP80MAX_PAD
|
||||
/* use touchscreen */
|
||||
|
||||
#elif CONFIG_KEYPAD == RG_NANO_PAD
|
||||
|
|
|
|||
|
|
@ -36,7 +36,7 @@
|
|||
#elif CONFIG_KEYPAD == CREATIVE_ZENXFI2_PAD
|
||||
#define TOUCHSCREEN_QUIT BUTTON_POWER
|
||||
#define TOUCHSCREEN_TOGGLE BUTTON_MENU
|
||||
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD
|
||||
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD || CONFIG_KEYPAD == HIDIZS_AP80MAX_PAD
|
||||
#define TOUCHSCREEN_QUIT BUTTON_POWER
|
||||
#define TOUCHSCREEN_TOGGLE BUTTON_PLAY
|
||||
#elif (CONFIG_KEYPAD == ANDROID_PAD)
|
||||
|
|
|
|||
|
|
@ -560,7 +560,7 @@
|
|||
#define TV_LINE_DOWN BUTTON_SCROLL_FWD
|
||||
#define TV_BOOKMARK BUTTON_PLAY
|
||||
|
||||
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD
|
||||
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD || CONFIG_KEYPAD == HIDIZS_AP80MAX_PAD
|
||||
#define TV_BOOKMARK BUTTON_PLAY
|
||||
|
||||
#elif CONFIG_KEYPAD == MA_PAD
|
||||
|
|
|
|||
|
|
@ -443,7 +443,7 @@
|
|||
#define LABEL_MENU "MENU"
|
||||
#define LABEL_VOLUME "VOL+/VOL-"
|
||||
|
||||
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD
|
||||
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD || CONFIG_KEYPAD == HIDIZS_AP80MAX_PAD
|
||||
/* use touchscreen */
|
||||
|
||||
#elif CONFIG_KEYPAD == MA_PAD
|
||||
|
|
|
|||
|
|
@ -396,7 +396,7 @@ CONFIG_KEYPAD == MROBE500_PAD
|
|||
#define BTN_QUIT BUTTON_POWER
|
||||
#define BTN_STOPRESET BUTTON_BACK
|
||||
|
||||
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD
|
||||
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD || CONFIG_KEYPAD == HIDIZS_AP80MAX_PAD
|
||||
/* use touchscreen */
|
||||
|
||||
#elif CONFIG_KEYPAD == MA_PAD
|
||||
|
|
@ -525,7 +525,7 @@ CONFIG_KEYPAD == MROBE500_PAD
|
|||
#elif ((LCD_WIDTH == 240) && (LCD_HEIGHT == 240)) || \
|
||||
((LCD_WIDTH == 320) && (LCD_HEIGHT == 240)) || \
|
||||
((LCD_WIDTH == 240) && ((LCD_HEIGHT == 320) || (LCD_HEIGHT == 400))) || \
|
||||
((LCD_WIDTH == 360) && (LCD_HEIGHT == 400))
|
||||
((LCD_WIDTH == 360) && ((LCD_HEIGHT == 400) || (LCD_HEIGHT == 640)))
|
||||
#define FOOD_SIZE 7
|
||||
#define ARGH_SIZE 8
|
||||
#define SPEED 4
|
||||
|
|
|
|||
|
|
@ -350,7 +350,7 @@ CONFIG_KEYPAD == MROBE500_PAD
|
|||
#define DOWN BUTTON_DOWN
|
||||
#define PAUSE BUTTON_PLAY
|
||||
|
||||
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD
|
||||
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD || CONFIG_KEYPAD == HIDIZS_AP80MAX_PAD
|
||||
/* use touchscreen */
|
||||
|
||||
#elif CONFIG_KEYPAD == RG_NANO_PAD
|
||||
|
|
|
|||
|
|
@ -282,7 +282,7 @@
|
|||
#define ZX_UP BUTTON_UP
|
||||
#define ZX_DOWN BUTTON_DOWN
|
||||
|
||||
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD
|
||||
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD || CONFIG_KEYPAD == HIDIZS_AP80MAX_PAD
|
||||
/* use touchscreen */
|
||||
|
||||
#elif CONFIG_KEYPAD == MA_PAD
|
||||
|
|
|
|||
BIN
backdrops/cabbiev2.360x640x16.bmp
Normal file
|
After Width: | Height: | Size: 675 KiB |
|
|
@ -126,6 +126,18 @@
|
|||
#define BUTTON_LEFT BUTTON_VOL_DOWN
|
||||
#define BUTTON_RIGHT BUTTON_VOL_UP
|
||||
#include "bitmaps/hibyicon.h"
|
||||
#elif defined(HIDIZS_AP80MAX)
|
||||
#define ICON_WIDTH 130
|
||||
#define ICON_HEIGHT 130
|
||||
#define ICON_NAME bm_hibyicon
|
||||
#define OF_NAME "HIBY PLAYER"
|
||||
#define BUTTON_UP BUTTON_PREV
|
||||
#define BUTTON_DOWN BUTTON_NEXT
|
||||
#define BUTTON_SELECT BUTTON_PLAY
|
||||
/* No volume keys, so the scroll wheel takes left/right */
|
||||
#define BUTTON_LEFT BUTTON_SCROLL_BACK
|
||||
#define BUTTON_RIGHT BUTTON_SCROLL_FWD
|
||||
#include "bitmaps/hibyicon.h"
|
||||
#else
|
||||
#error "must define ICON_WIDTH/HEIGHT"
|
||||
#endif
|
||||
|
|
@ -279,7 +291,7 @@ static enum boot_mode get_boot_mode(void)
|
|||
while(true)
|
||||
{
|
||||
/* on usb detect, immediately boot with last choice */
|
||||
#if !defined(HIBY_R3PROII) && !defined(HIBY_R1)
|
||||
#if !defined(HIBY_R3PROII) && !defined(HIBY_R1) && !defined(HIDIZS_AP80MAX)
|
||||
if(!adb_running && power_input_status() & POWER_INPUT_USB_CHARGER)
|
||||
{
|
||||
/* save last choice */
|
||||
|
|
@ -526,7 +538,7 @@ static void adb(int start)
|
|||
pid_t pid = fork();
|
||||
if(pid == 0)
|
||||
{
|
||||
#if defined(HIBY_R3PROII) || defined(HIBY_R1)
|
||||
#if defined(HIBY_R3PROII) || defined(HIBY_R1) || defined(HIDIZS_AP80MAX)
|
||||
execlp("/etc/init.d/T90adb", "T90adb", start ? "start" : "stop", NULL);
|
||||
#else
|
||||
execlp("/etc/init.d/K90adb", "K90adb", start ? "start" : "stop", NULL);
|
||||
|
|
@ -694,9 +706,13 @@ int main(int argc, char **argv)
|
|||
}
|
||||
else if(mode == BOOT_ROCKBOX)
|
||||
{
|
||||
#if defined(HIBY_R3PROII) || defined(HIBY_R1)
|
||||
#if defined(HIBY_R3PROII) || defined(HIBY_R1) || defined(HIDIZS_AP80MAX)
|
||||
/* Suspend bluetooth as it's not currently supported */
|
||||
system("/usr/bin/bt_suspend");
|
||||
#endif
|
||||
#if defined(HIDIZS_AP80MAX)
|
||||
/* Hidizs bt_suspend has these commented out */
|
||||
system("killall bluealsa bt-agent bluetoothd dbus-daemon 2>/dev/null");
|
||||
#endif
|
||||
fflush(stdout);
|
||||
mount_storage(true);
|
||||
|
|
|
|||
|
|
@ -765,6 +765,7 @@ Adam N. Burke
|
|||
Lê Khánh Bình
|
||||
Michael McAllister
|
||||
Hemant Kumar
|
||||
Jerry Shen
|
||||
|
||||
The libmad team
|
||||
The wavpack team
|
||||
|
|
|
|||
|
|
@ -187,7 +187,18 @@ target/hosted/hiby/hibylinux_codec.c
|
|||
#endif
|
||||
#endif
|
||||
|
||||
#if (defined(HIBY_R1) || defined(HIBY_R3PROII)) && !defined(SIMULATOR)
|
||||
#if defined(HIDIZS_AP80MAX) && !defined(SIMULATOR)
|
||||
target/hosted/hiby/usb-hiby-gadget.c
|
||||
target/hosted/hiby/ap80max/button-ap80max.c
|
||||
target/hosted/hiby/ap80max/powermgmt-ap80max.c
|
||||
target/hosted/hiby/debug-hiby.c
|
||||
#ifndef BOOTLOADER
|
||||
target/hosted/hiby/ap80max/led-ap80max.c
|
||||
target/hosted/hiby/hibylinux_codec.c
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if (defined(HIBY_R1) || defined(HIBY_R3PROII) || defined(HIDIZS_AP80MAX)) && !defined(SIMULATOR)
|
||||
target/hosted/hiby/usb-dac-hiby.c
|
||||
#endif
|
||||
|
||||
|
|
@ -222,7 +233,7 @@ target/hosted/xduoo/xduoolinux_codec.c
|
|||
target/hosted/button-devinput.c
|
||||
#endif
|
||||
|
||||
#if defined(HIBY_LINUX) && !defined(HIBY_R3PROII) && !defined(HIBY_R1) && !defined(SIMULATOR)
|
||||
#if defined(HIBY_LINUX) && !defined(HIBY_R3PROII) && !defined(HIBY_R1) && !defined(HIDIZS_AP80MAX) && !defined(SIMULATOR)
|
||||
target/hosted/usb-hiby.c
|
||||
#endif
|
||||
|
||||
|
|
|
|||
|
|
@ -157,6 +157,7 @@
|
|||
#define RG_NANO_PAD 77
|
||||
#define CTRU_PAD 78
|
||||
#define HIBY_R3PROII_PAD 79
|
||||
#define HIDIZS_AP80MAX_PAD 80
|
||||
|
||||
/* CONFIG_REMOTE_KEYPAD */
|
||||
#define H100_REMOTE 1
|
||||
|
|
@ -580,6 +581,8 @@ Lyre prototype 1 */
|
|||
#include "config/hibyr3proii.h"
|
||||
#elif defined(HIBY_R1)
|
||||
#include "config/hibyr1.h"
|
||||
#elif defined(HIDIZS_AP80MAX)
|
||||
#include "config/hidizsap80max.h"
|
||||
#else
|
||||
#error "unknown hardware platform!"
|
||||
#endif
|
||||
|
|
|
|||
105
firmware/export/config/hidizsap80max.h
Normal file
|
|
@ -0,0 +1,105 @@
|
|||
/*
|
||||
* This config file is for the Hidizs AP80 Pro Max based on the x1600E soc
|
||||
*/
|
||||
|
||||
/* For Rolo and boot loader */
|
||||
#define MODEL_NUMBER 125
|
||||
#define MODEL_NAME "HIDIZS AP80 PRO MAX"
|
||||
|
||||
#define PIVOT_ROOT "/data/mnt/sd_0"
|
||||
#define MULTIDRIVE_DIR "/data/mnt/usb"
|
||||
|
||||
/* LCD dimensions. The framebuffer is not the panel: /dev/fb0 is 480x640 but
|
||||
only the center 360 columns are scanned out - see hiby/lcd-target.h.
|
||||
sqrt(360^2 + 640^2) / 2.95" = 249 */
|
||||
#define LCD_WIDTH 360
|
||||
#define LCD_HEIGHT 640
|
||||
#define LCD_DPI 249
|
||||
|
||||
#define HAVE_LCD_SLEEP
|
||||
#define LCD_SLEEP_TIMEOUT (2*HZ)
|
||||
|
||||
#define LCD_DEPTH 16 /* 65536 colours */
|
||||
#define LCD_PIXELFORMAT RGB565 /* rgb565 */
|
||||
|
||||
/* /dev/fb0 is 480 columns wide but only the center 360 display */
|
||||
#define FB_STRIDE_MISMATCH 480
|
||||
#define FB_STRIDE_XOFFSET ((FB_STRIDE_MISMATCH - LCD_WIDTH) / 2)
|
||||
|
||||
#define CPU_FREQ 1008000000
|
||||
|
||||
#ifndef SIMULATOR
|
||||
#define HAVE_GENERAL_PURPOSE_LED
|
||||
#endif
|
||||
|
||||
/* define this if you have access to the quickscreen */
|
||||
#define HAVE_QUICKSCREEN
|
||||
#define HAVE_HOTKEY
|
||||
|
||||
#define HAVE_HEADPHONE_DETECTION
|
||||
|
||||
#ifndef BOOTLOADER
|
||||
#define HAVE_BUTTON_DATA
|
||||
#define HAVE_TOUCHSCREEN
|
||||
#endif
|
||||
|
||||
/* Identity, as the digitiser already reports in panel coordinates. EVIOCGABS
|
||||
declares twice that range but the hardware does not use it */
|
||||
#define DEFAULT_TOUCHSCREEN_CALIBRATION { .A=1, .B=0, .C=0, \
|
||||
.D=0, .E=1, .F=0, \
|
||||
.divider=1 }
|
||||
|
||||
#define HAVE_SCROLLWHEEL
|
||||
|
||||
#ifndef CONFIG_BACKLIGHT_FADING
|
||||
#undef CONFIG_BACKLIGHT_FADING
|
||||
#endif
|
||||
|
||||
/* KeyPad configuration for plugins */
|
||||
#define CONFIG_KEYPAD HIDIZS_AP80MAX_PAD
|
||||
|
||||
/* There are no volume buttons, so HAVE_VOLUME_IN_LIST is not defined - the
|
||||
scroll wheel handles volume instead */
|
||||
|
||||
/* Battery */
|
||||
#define BATTERY_TYPES_COUNT 1
|
||||
|
||||
/* Audio codec */
|
||||
#define HAVE_HIBY_LINUX_CODEC
|
||||
|
||||
/* 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 CONFIG_BATTERY_MEASURE (VOLTAGE_MEASURE|PERCENTAGE_MEASURE|TIME_MEASURE)
|
||||
|
||||
#define BATTERY_CAPACITY_DEFAULT 100 /* default battery capacity */
|
||||
#define BATTERY_CAPACITY_MIN 100 /* min. capacity selectable */
|
||||
#define BATTERY_CAPACITY_MAX 100 /* max. capacity selectable */
|
||||
#define BATTERY_CAPACITY_INC 0 /* capacity increment */
|
||||
|
||||
/* Special backlight paths */
|
||||
#define BACKLIGHT_HIBY
|
||||
|
||||
#define MIN_BRIGHTNESS_SETTING 1
|
||||
#define MAX_BRIGHTNESS_SETTING 100
|
||||
#define BRIGHTNESS_STEP 5
|
||||
#define DEFAULT_BRIGHTNESS_SETTING 100
|
||||
|
||||
/* ROLO */
|
||||
#define BOOTFILE_EXT "ap80max"
|
||||
#define BOOTFILE "rockbox." BOOTFILE_EXT
|
||||
#define BOOTDIR "/.rockbox"
|
||||
|
||||
/* USB */
|
||||
#define HAVE_USB_ADB
|
||||
#define HAVE_HOST_USB_AUDIO
|
||||
#define HAVE_USB_POWER
|
||||
#define USB_VID_STR "C502"
|
||||
#define USB_PID_STR "008C"
|
||||
|
||||
/* Generic HiBy stuff */
|
||||
#include "hibylinux.h"
|
||||
83
firmware/target/hosted/hiby/ap80max/button-ap80max.c
Normal file
|
|
@ -0,0 +1,83 @@
|
|||
/***************************************************************************
|
||||
* __________ __ ___
|
||||
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
|
||||
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
|
||||
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
|
||||
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
|
||||
* \/ \/ \/ \/ \/
|
||||
*
|
||||
* Copyright (C) 2017 Marcin Bukat
|
||||
* Copyright (C) 2025 by Melissa Autumn
|
||||
* Copyright (C) 2026 by Jerry Shen
|
||||
*
|
||||
* 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 <linux/input.h>
|
||||
|
||||
#include "sysfs.h"
|
||||
#include "button.h"
|
||||
#include "button-target.h"
|
||||
#include "hibylinux_codec.h"
|
||||
#include "touchscreen.h"
|
||||
#ifdef HAVE_BACKLIGHT
|
||||
#include "backlight.h"
|
||||
#endif /* HAVE_BACKLIGHT */
|
||||
|
||||
/*
|
||||
* /dev/input: gpio keys, adc keys, ring encoder, touchscreen
|
||||
*/
|
||||
|
||||
int button_map(int keycode)
|
||||
{
|
||||
switch(keycode)
|
||||
{
|
||||
case KEY_PLAYPAUSE:
|
||||
return BUTTON_PLAY;
|
||||
/* Keys are reversed as per glyphs */
|
||||
case KEY_PREVIOUSSONG:
|
||||
return BUTTON_NEXT;
|
||||
case KEY_NEXTSONG:
|
||||
return BUTTON_PREV;
|
||||
case KEY_POWER:
|
||||
return BUTTON_POWER;
|
||||
/* Scroll wheel */
|
||||
case KEY_LEFT:
|
||||
return BUTTON_SCROLL_FWD;
|
||||
case KEY_RIGHT:
|
||||
return BUTTON_SCROLL_BACK;
|
||||
|
||||
case BTN_TOUCH:
|
||||
{
|
||||
#ifdef HAVE_BACKLIGHT
|
||||
if (is_backlight_on(true)) {
|
||||
return BUTTON_TOUCH;
|
||||
}
|
||||
// Ignore
|
||||
return 0;
|
||||
#else
|
||||
return BUTTON_TOUCH;
|
||||
#endif
|
||||
}
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
bool headphones_inserted(void)
|
||||
{
|
||||
#ifdef BOOTLOADER
|
||||
int ps = 0;
|
||||
#else
|
||||
int ps = hiby_get_outputs();
|
||||
#endif
|
||||
|
||||
return (ps == 2 || ps == 3);
|
||||
}
|
||||
67
firmware/target/hosted/hiby/ap80max/button-target.h
Normal file
|
|
@ -0,0 +1,67 @@
|
|||
/***************************************************************************
|
||||
* __________ __ ___.
|
||||
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
|
||||
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
|
||||
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
|
||||
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
|
||||
* \/ \/ \/ \/ \/
|
||||
*
|
||||
* Copyright (C) 2026 by Jerry Shen
|
||||
*
|
||||
* 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_
|
||||
|
||||
#include <stdbool.h>
|
||||
#include "config.h"
|
||||
|
||||
/* Main unit's buttons - four keys and a scroll wheel, no volume keys. */
|
||||
|
||||
#define BUTTON_POWER 0x00000001
|
||||
#define BUTTON_PREV 0x00000002
|
||||
#define BUTTON_NEXT 0x00000004
|
||||
#define BUTTON_PLAY 0x00000008
|
||||
|
||||
/* Scroll wheel */
|
||||
#define BUTTON_SCROLL_BACK 0x00000010
|
||||
#define BUTTON_SCROLL_FWD 0x00000020
|
||||
|
||||
#define BUTTON_MAIN 0x0000003f
|
||||
|
||||
#define BUTTON_TOUCH 0x00000040
|
||||
|
||||
/* Touchscreen virtual buttons */
|
||||
#define BUTTON_TOPLEFT 0x00001000
|
||||
#define BUTTON_TOPMIDDLE 0x00002000
|
||||
#define BUTTON_TOPRIGHT 0x00004000
|
||||
#define BUTTON_MIDLEFT 0x00008000
|
||||
#define BUTTON_CENTER 0x00010000
|
||||
#define BUTTON_MIDRIGHT 0x00020000
|
||||
#define BUTTON_BOTTOMLEFT 0x00040000
|
||||
#define BUTTON_BOTTOMMIDDLE 0x00080000
|
||||
#define BUTTON_BOTTOMRIGHT 0x00100000
|
||||
|
||||
/* Software power-off */
|
||||
#define POWEROFF_BUTTON BUTTON_POWER
|
||||
#define POWEROFF_COUNT 25
|
||||
|
||||
/* For the simulator/sdl plugins/xworld */
|
||||
#ifndef BOOTLOADER
|
||||
#define BUTTON_LEFT BUTTON_PREV
|
||||
#define BUTTON_RIGHT BUTTON_NEXT
|
||||
#endif
|
||||
|
||||
/* The left/right aliases above don't exist in BOOTLOADER builds */
|
||||
#define NO_BUTTON_LR
|
||||
|
||||
int button_map(int keycode);
|
||||
|
||||
#endif /* _BUTTON_TARGET_H_ */
|
||||
117
firmware/target/hosted/hiby/ap80max/led-ap80max.c
Normal file
|
|
@ -0,0 +1,117 @@
|
|||
/***************************************************************************
|
||||
* __________ __ ___
|
||||
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
|
||||
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
|
||||
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
|
||||
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
|
||||
* \/ \/ \/ \/ \/
|
||||
*
|
||||
* Copyright (C) 2025 Melissa Autumn
|
||||
* Copyright (C) 2026 by Jerry Shen
|
||||
*
|
||||
* 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 <sys/stat.h>
|
||||
#include <fcntl.h>
|
||||
#include <stdbool.h>
|
||||
#include <unistd.h>
|
||||
#include <string.h>
|
||||
#include <stdio.h>
|
||||
#include "config.h"
|
||||
#include "backlight-target.h"
|
||||
#include "sysfs.h"
|
||||
#include "panic.h"
|
||||
#include "lcd.h"
|
||||
#include "settings.h"
|
||||
#include "power.h"
|
||||
|
||||
/* Same sgm31324 controller as the R3 Pro II, so the same sysfs node */
|
||||
static const char * const sysfs_led_type =
|
||||
"/sys/class/leds/sgm31324-leds/led_pattern";
|
||||
|
||||
/* FIXME: taken from the R3 Pro II's leds_sgm31324_add.sh; this player ships
|
||||
its own copy and the ordering has not been checked against it */
|
||||
enum AP80MAX_LED_PATTERNS {
|
||||
LED_PATTERN_INVALID = -1,
|
||||
LED_PATTERN_OFF = 0,
|
||||
LED_PATTERN_LIGHT_BLUE,
|
||||
LED_PATTERN_YELLOW,
|
||||
LED_PATTERN_CYAN,
|
||||
LED_PATTERN_ORANGE,
|
||||
LED_PATTERN_UNK_1, /* This might do something, but it seems to just be off */
|
||||
LED_PATTERN_NORMAL_RED_BLINK,
|
||||
LED_PATTERN_FAST_RED_BLINK,
|
||||
LED_PATTERN_GREEN,
|
||||
LED_PATTERN_BLUE, /* A slightly more blue blue */
|
||||
LED_PATTERN_PINK,
|
||||
LED_PATTERN_WHITE,
|
||||
};
|
||||
|
||||
int _last_buttonlight = LED_PATTERN_INVALID;
|
||||
|
||||
void _set_pattern(enum AP80MAX_LED_PATTERNS pattern) {
|
||||
if (_last_buttonlight != pattern) {
|
||||
_last_buttonlight = pattern;
|
||||
sysfs_set_int(sysfs_led_type, _last_buttonlight);
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef HAVE_GENERAL_PURPOSE_LED
|
||||
void led_hw_brightness(int brightness)
|
||||
{
|
||||
(void)brightness;
|
||||
}
|
||||
|
||||
void led_hw_charged(void)
|
||||
{
|
||||
if (global_settings.use_led_indicators) {
|
||||
_set_pattern(LED_PATTERN_GREEN);
|
||||
}
|
||||
}
|
||||
|
||||
void led_hw_charging(void)
|
||||
{
|
||||
_set_pattern(LED_PATTERN_NORMAL_RED_BLINK);
|
||||
}
|
||||
|
||||
void led_hw_off(void)
|
||||
{
|
||||
// Don't turn the led off if charging.
|
||||
if (charging_state())
|
||||
return;
|
||||
|
||||
_set_pattern(LED_PATTERN_OFF);
|
||||
}
|
||||
|
||||
void led_hw_on(void)
|
||||
{
|
||||
if (charging_state()) {
|
||||
led_hw_charging();
|
||||
} else {
|
||||
if (global_settings.use_led_indicators) {
|
||||
_set_pattern(LED_PATTERN_LIGHT_BLUE);
|
||||
}
|
||||
else {
|
||||
led_hw_off();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void led_hw_set_mode(bool mode)
|
||||
{
|
||||
if (mode) {
|
||||
led_hw_on();
|
||||
}
|
||||
else {
|
||||
led_hw_off();
|
||||
}
|
||||
}
|
||||
#endif
|
||||
39
firmware/target/hosted/hiby/ap80max/powermgmt-ap80max.c
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
/***************************************************************************
|
||||
* __________ __ ___.
|
||||
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
|
||||
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
|
||||
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
|
||||
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
|
||||
* \/ \/ \/ \/ \/
|
||||
*
|
||||
* Copyright (C) 2017 Marcin Bukat
|
||||
* Copyright (C) 2025 by Melissa Autumn
|
||||
*
|
||||
* 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"
|
||||
|
||||
unsigned short battery_level_disksafe = 3470;
|
||||
|
||||
/* the OF shuts down at this voltage */
|
||||
unsigned short battery_level_shutoff = 3400;
|
||||
|
||||
/* voltages (millivolt) of 0%, 10%, ... 100% when charging disabled */
|
||||
unsigned short percent_to_volt_discharge[11] =
|
||||
{
|
||||
3400, 3675, 3715, 3750, 3775, 3810, 3850, 4025, 4120, 4230, 4350
|
||||
};
|
||||
|
||||
/* voltages (millivolt) of 0%, 10%, ... 100% when charging enabled */
|
||||
unsigned short percent_to_volt_charge[11] =
|
||||
{
|
||||
3485, 3780, 3836, 3857, 3890, 3930, 3986, 4025, 4120, 4230, 4350
|
||||
};
|
||||
|
|
@ -26,7 +26,13 @@
|
|||
#define LCD_OPTIMIZED_UPDATE_RECT
|
||||
|
||||
extern fb_data *framebuffer;
|
||||
|
||||
#ifdef FB_STRIDE_MISMATCH
|
||||
#define LCD_FRAMEBUF_ADDR(col, row) \
|
||||
(framebuffer + (row)*FB_STRIDE_MISMATCH + (col) + FB_STRIDE_XOFFSET)
|
||||
#else
|
||||
#define LCD_FRAMEBUF_ADDR(col, row) (framebuffer + (row)*LCD_WIDTH + (col))
|
||||
#endif
|
||||
|
||||
extern void lcd_set_active(bool active);
|
||||
#endif /* __LCD_TARGET_H__ */
|
||||
|
|
|
|||
|
|
@ -106,6 +106,10 @@ void lcd_init_device(void)
|
|||
vinfo.yres, vinfo.bits_per_pixel);
|
||||
}
|
||||
#endif
|
||||
#elif defined(FB_STRIDE_MISMATCH)
|
||||
/* For framebuffers wider than the panel and cannot be resized */
|
||||
if (vinfo.bits_per_pixel != LCD_DEPTH)
|
||||
panicf("Unexpected framebuffer depth: %d", vinfo.bits_per_pixel);
|
||||
#else
|
||||
/* Make sure we match our desired bitdepth */
|
||||
if (vinfo.bits_per_pixel != LCD_DEPTH || vinfo.xres != LCD_WIDTH || vinfo.yres != LCD_HEIGHT) {
|
||||
|
|
@ -167,6 +171,20 @@ void lcd_enable(bool on)
|
|||
extern void lcd_copy_buffer_rect(fb_data *dst, const fb_data *src,
|
||||
int width, int height);
|
||||
|
||||
#ifdef FB_STRIDE_MISMATCH
|
||||
/* lcd_copy_buffer_rect() for framebuffers wider than the panel */
|
||||
static void fb_copy_rect(fb_data *dst, const fb_data *src,
|
||||
int width, int height)
|
||||
{
|
||||
while (height--)
|
||||
{
|
||||
memcpy(dst, src, width * sizeof(fb_data));
|
||||
dst += FB_STRIDE_MISMATCH;
|
||||
src += LCD_WIDTH;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
void lcd_update(void)
|
||||
{
|
||||
if (fd < 0) return;
|
||||
|
|
@ -176,9 +194,15 @@ void lcd_update(void)
|
|||
#endif
|
||||
{
|
||||
/* Copy the Rockbox framebuffer to the second framebuffer */
|
||||
#ifdef FB_STRIDE_MISMATCH
|
||||
/* Strides differ - not one contiguous run */
|
||||
fb_copy_rect(LCD_FRAMEBUF_ADDR(0, 0), FBADDR(0, 0),
|
||||
LCD_WIDTH, LCD_HEIGHT);
|
||||
#else
|
||||
fb_data *dst = LCD_FRAMEBUF_ADDR(0, 0) + (fb_plane * FRAMEBUFFER_SIZE);
|
||||
lcd_copy_buffer_rect(dst, FBADDR(0,0),
|
||||
LCD_WIDTH*LCD_HEIGHT, 1);
|
||||
#endif
|
||||
redraw();
|
||||
}
|
||||
}
|
||||
|
|
@ -191,6 +215,10 @@ void lcd_update_rect(int x, int y, int width, int height)
|
|||
if (lcd_active())
|
||||
#endif
|
||||
{
|
||||
#ifdef FB_STRIDE_MISMATCH
|
||||
/* Strides differ - do line-by-line */
|
||||
fb_copy_rect(LCD_FRAMEBUF_ADDR(x, y), FBADDR(x, y), width, height);
|
||||
#else
|
||||
fb_data *dst = LCD_FRAMEBUF_ADDR(x, y) + (fb_plane * FRAMEBUFFER_SIZE);
|
||||
fb_data *src = FBADDR(x,y);
|
||||
|
||||
|
|
@ -205,6 +233,7 @@ void lcd_update_rect(int x, int y, int width, int height)
|
|||
/* Full width - copy as one line */
|
||||
lcd_copy_buffer_rect(dst, src, LCD_WIDTH*height, 1);
|
||||
}
|
||||
#endif
|
||||
redraw();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -525,6 +525,13 @@
|
|||
#define UI_LCD_POSX 77
|
||||
#define UI_LCD_POSY 74
|
||||
|
||||
#elif defined(HIDIZS_AP80MAX)
|
||||
#define UI_TITLE "Hidizs AP80 Pro Max"
|
||||
#define UI_WIDTH 580
|
||||
#define UI_HEIGHT 880
|
||||
#define UI_LCD_POSX 100
|
||||
#define UI_LCD_POSY 100
|
||||
|
||||
#elif defined(SIMULATOR)
|
||||
#error no UI defines
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -50,7 +50,7 @@
|
|||
#include "gui/skin_engine/skin_engine.h"
|
||||
#endif
|
||||
|
||||
#if defined(HIBY_R3PROII) || defined(HIBY_R1)
|
||||
#if defined(HIBY_R3PROII) || defined(HIBY_R1) || defined(HIDIZS_AP80MAX)
|
||||
#include "usb-hiby-gadget.h"
|
||||
#endif
|
||||
#if defined(DX50) || defined(DX90)
|
||||
|
|
@ -91,7 +91,7 @@ void usb_set_mode(int mode)
|
|||
usb_mode = mode;
|
||||
#if defined(DX50) || defined(DX90)
|
||||
ibasso_set_usb_mode(mode);
|
||||
#elif defined(HIBY_R3PROII) || defined(HIBY_R1)
|
||||
#elif defined(HIBY_R3PROII) || defined(HIBY_R1) || defined(HIDIZS_AP80MAX)
|
||||
hiby_set_usb_mode(mode);
|
||||
#endif
|
||||
}
|
||||
|
|
|
|||
|
|
@ -471,6 +471,10 @@ $releasenotes="/wiki/ReleaseNotes400";
|
|||
name => 'Hiby R3Pro II',
|
||||
status => 2,
|
||||
},
|
||||
'hidizsap80max' => {
|
||||
name => 'Hidizs AP80 Pro Max',
|
||||
status => 1,
|
||||
},
|
||||
);
|
||||
|
||||
sub manualname {
|
||||
|
|
|
|||
29
tools/configure
vendored
|
|
@ -1737,8 +1737,8 @@ cat <<EOF
|
|||
300) R3 Pro II
|
||||
==Echo project== ==Surfans== 301) R1
|
||||
270) Echo R1 (WIP) 280) F28 (WIP)
|
||||
|
||||
==Nintendo==
|
||||
==Hidizs==
|
||||
==Nintendo== 302) AP80 Pro Max (WIP)
|
||||
290) Nintendo 3DS (WIP)
|
||||
|
||||
EOF
|
||||
|
|
@ -4226,6 +4226,31 @@ fi
|
|||
sysfont="20-Terminus"
|
||||
;;
|
||||
|
||||
302|hidizsap80max)
|
||||
target_id=125
|
||||
application=yes
|
||||
app_type="hibyos"
|
||||
modelname="hidizsap80max"
|
||||
target="HIDIZS_AP80MAX"
|
||||
memory=16 # The device has 64mb but let's make sure it still boots with things in the background
|
||||
mipsellinuxcc
|
||||
tool="cp "
|
||||
boottool="cp "
|
||||
bmp2rb_mono="$rootdir/tools/bmp2rb -f 0"
|
||||
bmp2rb_native="$rootdir/tools/bmp2rb -f 4"
|
||||
output="rockbox.ap80max"
|
||||
bootoutput="bootloader.ap80max"
|
||||
appextra="recorder:gui:hosted"
|
||||
plugins="yes"
|
||||
# architecture, manufacturer and model for the target-tree build
|
||||
# These align with
|
||||
t_cpu="hosted"
|
||||
t_manufacturer="hiby"
|
||||
t_model="ap80max"
|
||||
sysfontbl="24-Terminus"
|
||||
sysfont="20-Terminus"
|
||||
;;
|
||||
|
||||
|
||||
*)
|
||||
echo "Please select a supported target platform!"
|
||||
|
|
|
|||
BIN
uisimulator/bitmaps/UI-hidizsap80max.bmp
Normal file
|
After Width: | Height: | Size: 997 KiB |
|
|
@ -87,5 +87,7 @@ shanling-q1.c
|
|||
rg-nano.c
|
||||
#elif CONFIG_KEYPAD == HIBY_R3PROII_PAD
|
||||
hiby-r3proii.c
|
||||
#elif CONFIG_KEYPAD == HIDIZS_AP80MAX_PAD
|
||||
hidizs-ap80max.c
|
||||
#endif
|
||||
#endif /* SIMULATOR */
|
||||
|
|
|
|||
57
uisimulator/buttonmap/hidizs-ap80max.c
Normal file
|
|
@ -0,0 +1,57 @@
|
|||
/***************************************************************************
|
||||
* __________ __ ___.
|
||||
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
|
||||
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
|
||||
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
|
||||
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
|
||||
* \/ \/ \/ \/ \/
|
||||
*
|
||||
* Copyright (C) 2021 by Solomon Peachy
|
||||
* Copyright (C) 2026 by Jerry Shen
|
||||
*
|
||||
* 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 <SDL.h>
|
||||
#include "button.h"
|
||||
#include "buttonmap.h"
|
||||
|
||||
int key_to_button(int keyboard_button)
|
||||
{
|
||||
switch (keyboard_button)
|
||||
{
|
||||
case SDLK_UP:
|
||||
return BUTTON_SCROLL_BACK;
|
||||
case SDLK_DOWN:
|
||||
return BUTTON_SCROLL_FWD;
|
||||
case SDLK_LEFT:
|
||||
return BUTTON_PREV;
|
||||
case SDLK_RIGHT:
|
||||
return BUTTON_NEXT;
|
||||
case SDLK_RETURN:
|
||||
case SDLK_SPACE:
|
||||
return BUTTON_PLAY;
|
||||
case SDLK_ESCAPE:
|
||||
return BUTTON_POWER;
|
||||
default:
|
||||
return BUTTON_NONE;
|
||||
}
|
||||
}
|
||||
|
||||
struct button_map bm[] = {
|
||||
{ SDLK_ESCAPE, 525, 270, 35, "Power" },
|
||||
{ SDLK_LEFT, 526, 432, 25, "Previous" },
|
||||
{ SDLK_SPACE, 526, 515, 25, "Play" },
|
||||
{ SDLK_RIGHT, 526, 598, 25, "Next" },
|
||||
{ SDLK_UP, 525, 230, 35, "Scroll Fwd" },
|
||||
{ SDLK_DOWN, 525, 310, 35, "Scroll Back" },
|
||||
{ 0, 0, 0, 0, "None" }
|
||||
};
|
||||
|
|
@ -85,6 +85,7 @@ wps.480x720x(16|24|32): cabbiev2.480x720x16.touch.wps
|
|||
wps.800x480x(16|24|32): cabbiev2.800x480x16.wps
|
||||
wps.480x800x(16|24|32): cabbiev2.480x800x16.wps
|
||||
wps.400x240x(16|24|32): cabbiev2.400x240x16.wps
|
||||
wps.360x640x(16|24|32): cabbiev2.360x640x16.wps
|
||||
wps.360x400x(16|24|32): cabbiev2.360x400x16.wps
|
||||
wps.320x480x(16|24|32): cabbiev2.320x480x16.wps
|
||||
wps.320x240x(16|24|32): cabbiev2.320x240x16.wps
|
||||
|
|
@ -118,6 +119,7 @@ Font.480x720x(16|24|32): 35-Adobe-Helvetica.fnt
|
|||
Font.800x480x(16|24|32): 35-Adobe-Helvetica.fnt
|
||||
Font.480x800x(16|24|32): 35-Adobe-Helvetica.fnt
|
||||
Font.400x240x(16|24|32): 15-Adobe-Helvetica.fnt
|
||||
Font.360x640x(16|24|32): 35-Adobe-Helvetica.fnt
|
||||
Font.360x400x(16|24|32): 18-Adobe-Helvetica.fnt
|
||||
Font.320x480x(16|24|32): 27-Adobe-Helvetica.fnt
|
||||
Font.320x240x(16|24|32): 15-Adobe-Helvetica.fnt
|
||||
|
|
@ -155,6 +157,7 @@ backdrop.480x720x(16|24|32): backdrops/cabbiev2.480x720x16.bmp
|
|||
backdrop.800x480x(16|24|32): backdrops/cabbiev2.800x480x16.bmp
|
||||
backdrop.480x800x(16|24|32): backdrops/cabbiev2.480x800x16.bmp
|
||||
backdrop.400x240x(16|24|32): backdrops/cabbiev2.400x240x16.bmp
|
||||
backdrop.360x640x(16|24|32): backdrops/cabbiev2.360x640x16.bmp
|
||||
backdrop.360x400x(16|24|32): backdrops/cabbiev2.360x400x16.bmp
|
||||
backdrop.320x480x(16|24|32): backdrops/cabbiev2.320x480x16.bmp
|
||||
backdrop.320x240x(16|24|32): backdrops/cabbiev2.320x240x16.bmp
|
||||
|
|
@ -185,6 +188,7 @@ iconset.480x720x(16|24|32): icons/tango_icons.32x32.bmp
|
|||
iconset.800x480x(16|24|32): icons/tango_icons.32x32.bmp
|
||||
iconset.480x800x(16|24|32): icons/tango_icons.32x32.bmp
|
||||
iconset.400x240x(16|24|32): icons/tango_icons.16x16.bmp
|
||||
iconset.360x640x(16|24|32): icons/tango_icons.32x32.bmp
|
||||
iconset.360x400x(16|24|32): icons/tango_icons.32x32.bmp
|
||||
iconset.320x480x(16|24|32): icons/tango_icons.24x24.bmp
|
||||
iconset.320x240x(16|24|32): icons/tango_icons.16x16.bmp
|
||||
|
|
@ -208,6 +212,7 @@ viewers iconset.480x720x(16|24|32): icons/tango_icons_viewers.32x32.bmp
|
|||
viewers iconset.800x480x(16|24|32): icons/tango_icons_viewers.32x32.bmp
|
||||
viewers iconset.480x800x(16|24|32): icons/tango_icons_viewers.32x32.bmp
|
||||
viewers iconset.400x240x(16|24|32): icons/tango_icons_viewers.16x16.bmp
|
||||
viewers iconset.360x640x(16|24|32): icons/tango_icons_viewers.32x32.bmp
|
||||
viewers iconset.360x400x(16|24|32): icons/tango_icons_viewers.32x32.bmp
|
||||
viewers iconset.320x480x(16|24|32): icons/tango_icons_viewers.24x24.bmp
|
||||
viewers iconset.320x240x(16|24|32): icons/tango_icons_viewers.16x16.bmp
|
||||
|
|
|
|||
87
wps/cabbiev2.360x640x16.wps
Normal file
|
|
@ -0,0 +1,87 @@
|
|||
# Cabbie v2.0
|
||||
# (C) 2007-2012 The Authors (see /rockbox/wps/AUTHORS)
|
||||
# Derived from "cabbie" (C) Yohann Misquitta
|
||||
#
|
||||
# Laid out against wpsbackdrop-360x640x16.bmp, whose fixed landmarks are:
|
||||
# title bar x=30..329 y=6..27
|
||||
# progress trough x=30..329 y=516..537
|
||||
# status row y=605..633, with shuffle baked at x=209 and repeat at x=273
|
||||
# Everything below is anchored to those; the content area is y=28..515.
|
||||
#
|
||||
# Disable Status Bar
|
||||
%wd
|
||||
#
|
||||
# Load Backdrop
|
||||
%X(wpsbackdrop-360x640x16.bmp)
|
||||
#
|
||||
# Preload Images
|
||||
%xl(A,lock-360x640x16.bmp,0,0,2)
|
||||
%xl(B,battery-360x640x16.bmp,0,0,10)
|
||||
%xl(C,volume-360x640x16.bmp,0,0,10)
|
||||
%xl(D,shuffle-360x640x16.bmp,0,0)
|
||||
%xl(E,repeat-360x640x16.bmp,0,0,4)
|
||||
%xl(F,playmode-360x640x16.bmp,0,0,5)
|
||||
#
|
||||
# Album Art/Info Viewport Conditional
|
||||
%?C<%Vd(a)|%Vd(b)>
|
||||
#
|
||||
# Progress Bar
|
||||
# Backdrop trough occupies x=30..329, y=516..537.
|
||||
%V(30,516,300,20,-)
|
||||
%pb(0,0,-,20,pb-360x640x16.bmp)
|
||||
#
|
||||
# Hold
|
||||
%V(16,605,38,29,-)
|
||||
%?mh<%xd(Aa)|%xd(Ab)>
|
||||
#
|
||||
# Battery
|
||||
%V(69,605,66,29,-)
|
||||
%?bp<%?bc<%xd(Ba)|%xd(Bb)>|%?bl<|%xd(Bc)|%xd(Bd)|%xd(Be)|%xd(Bf)|%xd(Bg)|%xd(Bh)|%xd(Bi)|%xd(Bj)>>
|
||||
#
|
||||
# Volume
|
||||
%V(147,605,50,29,-)
|
||||
%?pv<%xd(Ca)|%xd(Cb)|%xd(Cc)|%xd(Cd)|%xd(Ce)|%xd(Cf)|%xd(Cg)|%xd(Ch)|%xd(Ci)|%xd(Cj)>
|
||||
#
|
||||
# Shuffle
|
||||
%V(208,605,55,29,-)
|
||||
%?ps<%xd(D)>
|
||||
#
|
||||
# Repeat
|
||||
%V(273,605,27,29,-)
|
||||
%?mm<|%xd(Ea)|%xd(Eb)|%xd(Ec)|%xd(Ed)>
|
||||
#
|
||||
# Playmode
|
||||
%V(309,605,36,29,-)
|
||||
%?mp<%xd(Fa)|%xd(Fb)|%xd(Fc)|%xd(Fd)|%xd(Fe)>
|
||||
#
|
||||
# Time Elapsed/Remaining
|
||||
%V(30,542,300,36,-)
|
||||
%al%pc%ac%?Sr<%pe %Sx(of) %pp|%pp %Sx(of) %pe>%ar%pr
|
||||
#
|
||||
# Album Art
|
||||
%ax%Vl(a,40,45,280,280,-)
|
||||
%Cl(0,0,280,280,c,c)
|
||||
%Cd
|
||||
#
|
||||
# Track Info - Album Art
|
||||
%ax%Vl(a,0,329,-,187,1)
|
||||
%s%ac%?id<%id|%?d(1)<%d(1)|%(root%)>>
|
||||
%s%ac%?it<%it|%fn>
|
||||
%s%ac%?ia<%ia|%?iA<%iA|%?d(2)<%d(2)|%(root%)>>>
|
||||
|
||||
%s%ac%Sx(Next:) %?Ia<%Ia|%?IA<%IA|%?D(2)<%D(2)|%(root%)>>> - %?It<%It|%Fn>
|
||||
#
|
||||
# Track Info - No Album Art
|
||||
%Vl(b,0,96,-,420,1)
|
||||
%s%ac%?id<%id|%?d(1)<%d(1)|%(root%)>>
|
||||
%s%ac%?it<%it|%fn>
|
||||
%s%ac%?ia<%ia|%?iA<%iA|%?d(2)<%d(2)|%(root%)>>>
|
||||
%ac%?iy<%iy|>
|
||||
|
||||
%ac%?ig<%ig|>
|
||||
%ac%?fv<%(vbr%) |>%fb kbit/s %fc
|
||||
|
||||
%ac%Sx(Next:)
|
||||
%s%ac%?Id<%Id|%?D(1)<%D(1)|%(root%)>>
|
||||
%ac%s%?It<%It|%Fn>
|
||||
%s%ac%?Ia<%Ia|%?IA<%IA|%?D(2)<%D(2)|%(root%)>>>
|
||||
BIN
wps/cabbiev2/battery-360x640x16.bmp
Normal file
|
After Width: | Height: | Size: 57 KiB |
BIN
wps/cabbiev2/lock-360x640x16.bmp
Normal file
|
After Width: | Height: | Size: 6.6 KiB |
BIN
wps/cabbiev2/pb-360x640x16.bmp
Normal file
|
After Width: | Height: | Size: 6.5 KiB |
BIN
wps/cabbiev2/playmode-360x640x16.bmp
Normal file
|
After Width: | Height: | Size: 15 KiB |
BIN
wps/cabbiev2/repeat-360x640x16.bmp
Normal file
|
After Width: | Height: | Size: 9.6 KiB |
BIN
wps/cabbiev2/shuffle-360x640x16.bmp
Normal file
|
After Width: | Height: | Size: 4.8 KiB |
BIN
wps/cabbiev2/volume-360x640x16.bmp
Normal file
|
After Width: | Height: | Size: 43 KiB |
BIN
wps/cabbiev2/wpsbackdrop-360x640x16.bmp
Normal file
|
After Width: | Height: | Size: 900 KiB |