mirror of
https://github.com/CTCaer/hekate
synced 2024-12-22 19:31:12 +00:00
Added safeui option to Nyx and ofw as launch option to be selected en launch menu and konami code
This commit is contained in:
parent
3250b2e32a
commit
63d9f35a78
8 changed files with 158 additions and 3 deletions
|
@ -28,6 +28,32 @@
|
||||||
|
|
||||||
#define JC_BTNS_ALL (JC_BTNS_PREV_NEXT | JC_BTNS_ENTER | JC_BTNS_DIRECTION_PAD | JC_BTNS_ESC)
|
#define JC_BTNS_ALL (JC_BTNS_PREV_NEXT | JC_BTNS_ENTER | JC_BTNS_DIRECTION_PAD | JC_BTNS_ESC)
|
||||||
|
|
||||||
|
// Joy-Con buttons mask
|
||||||
|
#define JC_BTNS_Y 0x000001
|
||||||
|
#define JC_BTNS_X 0x000002
|
||||||
|
#define JC_BTNS_B 0x000004
|
||||||
|
#define JC_BTNS_A 0x000008
|
||||||
|
#define JC_BTNS_SR_R 0x000010
|
||||||
|
#define JC_BTNS_SL_R 0x000020
|
||||||
|
#define JC_BTNS_R 0x000040
|
||||||
|
#define JC_BTNS_ZR 0x000080
|
||||||
|
#define JC_BTNS_MINUS 0x000100
|
||||||
|
#define JC_BTNS_PLUS 0x000200
|
||||||
|
#define JC_BTNS_R3 0x000400
|
||||||
|
#define JC_BTNS_L3 0x000800
|
||||||
|
#define JC_BTNS_HOME 0x001000
|
||||||
|
#define JC_BTNS_CAPTURE 0x002000
|
||||||
|
#define JC_BTNS_PAD 0x004000
|
||||||
|
#define JC_BTNS_WIRED 0x008000
|
||||||
|
#define JC_BTNS_DOWN 0x010000
|
||||||
|
#define JC_BTNS_UP 0x020000
|
||||||
|
#define JC_BTNS_RIGHT 0x040000
|
||||||
|
#define JC_BTNS_LEFT 0x080000
|
||||||
|
#define JC_BTNS_SR_L 0x100000
|
||||||
|
#define JC_BTNS_SL_L 0x200000
|
||||||
|
#define JC_BTNS_L 0x400000
|
||||||
|
#define JC_BTNS_ZL 0x800000
|
||||||
|
|
||||||
typedef struct _jc_bt_conn_t
|
typedef struct _jc_bt_conn_t
|
||||||
{
|
{
|
||||||
u8 type;
|
u8 type;
|
||||||
|
|
|
@ -27,6 +27,7 @@ OBJS = $(addprefix $(BUILDDIR)/$(TARGET)/, \
|
||||||
start.o exception_handlers.o \
|
start.o exception_handlers.o \
|
||||||
nyx.o heap.o \
|
nyx.o heap.o \
|
||||||
gfx.o \
|
gfx.o \
|
||||||
|
konami.o \
|
||||||
gui.o gui_info.o gui_tools.o gui_options.o gui_emmc_tools.o gui_emummc_tools.o gui_tools_partition_manager.o \
|
gui.o gui_info.o gui_tools.o gui_options.o gui_emmc_tools.o gui_emummc_tools.o gui_tools_partition_manager.o \
|
||||||
fe_emummc_tools.o fe_emmc_tools.o \
|
fe_emummc_tools.o fe_emmc_tools.o \
|
||||||
)
|
)
|
||||||
|
|
|
@ -60,6 +60,7 @@ void set_nyx_default_configuration()
|
||||||
n_cfg.jc_disable = 0;
|
n_cfg.jc_disable = 0;
|
||||||
n_cfg.jc_force_right = 0;
|
n_cfg.jc_force_right = 0;
|
||||||
n_cfg.bpmp_clock = 0;
|
n_cfg.bpmp_clock = 0;
|
||||||
|
n_cfg.safeui = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int create_config_entry()
|
int create_config_entry()
|
||||||
|
@ -242,6 +243,10 @@ int create_nyx_config_entry(bool force_unmount)
|
||||||
itoa(n_cfg.bpmp_clock, lbuf, 10);
|
itoa(n_cfg.bpmp_clock, lbuf, 10);
|
||||||
f_puts(lbuf, &fp);
|
f_puts(lbuf, &fp);
|
||||||
|
|
||||||
|
f_puts("\nsafeui=", &fp);
|
||||||
|
itoa(n_cfg.safeui, lbuf, 10);
|
||||||
|
f_puts(lbuf, &fp);
|
||||||
|
|
||||||
f_puts("\n", &fp);
|
f_puts("\n", &fp);
|
||||||
|
|
||||||
f_close(&fp);
|
f_close(&fp);
|
||||||
|
|
|
@ -54,6 +54,7 @@ typedef struct _nyx_config
|
||||||
u32 jc_disable;
|
u32 jc_disable;
|
||||||
u32 jc_force_right;
|
u32 jc_force_right;
|
||||||
u32 bpmp_clock;
|
u32 bpmp_clock;
|
||||||
|
u32 safeui;
|
||||||
} nyx_config;
|
} nyx_config;
|
||||||
|
|
||||||
void set_default_configuration();
|
void set_default_configuration();
|
||||||
|
|
|
@ -29,6 +29,7 @@
|
||||||
|
|
||||||
#include "../config.h"
|
#include "../config.h"
|
||||||
#include <libs/fatfs/ff.h>
|
#include <libs/fatfs/ff.h>
|
||||||
|
#include "konami.h"
|
||||||
|
|
||||||
extern hekate_config h_cfg;
|
extern hekate_config h_cfg;
|
||||||
extern nyx_config n_cfg;
|
extern nyx_config n_cfg;
|
||||||
|
@ -615,6 +616,8 @@ static bool _jc_virt_mouse_read(lv_indev_data_t *data)
|
||||||
close_btn = NULL;
|
close_btn = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
check_konami_code(jc_pad);
|
||||||
|
|
||||||
return false; // No buffering so no more data read.
|
return false; // No buffering so no more data read.
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -779,6 +782,35 @@ lv_res_t mbox_action(lv_obj_t *btns, const char *txt)
|
||||||
return LV_RES_INV;
|
return LV_RES_INV;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
lv_res_t mbox_konami_action(lv_obj_t *btns, const char *txt)
|
||||||
|
{
|
||||||
|
lv_obj_t *mbox = lv_mbox_get_from_btn(btns);
|
||||||
|
|
||||||
|
// Do here some konami code related stuff
|
||||||
|
// put safeui to false and homescreen to 0
|
||||||
|
n_cfg.safeui = 0;
|
||||||
|
n_cfg.home_screen = 0;
|
||||||
|
|
||||||
|
//store nyx config
|
||||||
|
int res = !create_nyx_config_entry(true);
|
||||||
|
|
||||||
|
if(res){
|
||||||
|
lv_obj_t *dark_bg = lv_obj_get_parent(mbox);
|
||||||
|
lv_obj_del(dark_bg); // Deletes children also (mbox).
|
||||||
|
reload_nyx();
|
||||||
|
return LV_RES_INV;
|
||||||
|
}else {
|
||||||
|
static const char * mbox_btn_map[] = {"\251", "\222OK!", "\251", ""};
|
||||||
|
mbox = lv_mbox_create(lv_scr_act(), NULL);
|
||||||
|
lv_mbox_set_recolor_text(mbox, true);
|
||||||
|
lv_mbox_set_text(mbox, "#FF8000 Nyx Configuration#\n\n#FFDD00 Failed to save the configuration#\n#FFDD00 to sd card!#");
|
||||||
|
lv_mbox_add_btns(mbox, mbox_btn_map, NULL);
|
||||||
|
lv_obj_align(mbox, NULL, LV_ALIGN_CENTER, 0, 0);
|
||||||
|
lv_obj_set_top(mbox, true);
|
||||||
|
return LV_RES_OK;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
bool nyx_emmc_check_battery_enough()
|
bool nyx_emmc_check_battery_enough()
|
||||||
{
|
{
|
||||||
if (fuse_read_hw_state() == FUSE_NX_HW_STATE_DEV)
|
if (fuse_read_hw_state() == FUSE_NX_HW_STATE_DEV)
|
||||||
|
@ -1508,7 +1540,10 @@ static lv_obj_t *create_window_launch(const char *win_title)
|
||||||
|
|
||||||
lv_win_set_style(win, LV_WIN_STYLE_BG, &win_bg_style);
|
lv_win_set_style(win, LV_WIN_STYLE_BG, &win_bg_style);
|
||||||
|
|
||||||
close_btn = lv_win_add_btn(win, NULL, SYMBOL_CLOSE" Close", _win_launch_close_action);
|
if(!n_cfg.safeui)
|
||||||
|
close_btn = lv_win_add_btn(win, NULL, SYMBOL_CLOSE" Close", _win_launch_close_action);
|
||||||
|
else
|
||||||
|
close_btn = NULL;
|
||||||
|
|
||||||
return win;
|
return win;
|
||||||
}
|
}
|
||||||
|
@ -1522,6 +1557,12 @@ static lv_res_t _launch_action(lv_obj_t *btn)
|
||||||
return LV_RES_OK;
|
return LV_RES_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static lv_res_t _launch_ofw_action(lv_obj_t *btn)
|
||||||
|
{
|
||||||
|
power_set_state(REBOOT_BYPASS_FUSES);
|
||||||
|
return LV_RES_OK;
|
||||||
|
}
|
||||||
|
|
||||||
static lv_res_t logs_onoff_toggle(lv_obj_t *btn)
|
static lv_res_t logs_onoff_toggle(lv_obj_t *btn)
|
||||||
{
|
{
|
||||||
launch_logs_enable = !launch_logs_enable;
|
launch_logs_enable = !launch_logs_enable;
|
||||||
|
@ -1639,7 +1680,8 @@ static lv_res_t _create_window_home_launch(lv_obj_t *btn)
|
||||||
else
|
else
|
||||||
win = create_window_launch(SYMBOL_GPS" More Configurations");
|
win = create_window_launch(SYMBOL_GPS" More Configurations");
|
||||||
|
|
||||||
lv_win_add_btn(win, NULL, SYMBOL_LIST" Logs #D0D0D0 OFF#", logs_onoff_toggle);
|
if(!n_cfg.safeui)
|
||||||
|
lv_win_add_btn(win, NULL, SYMBOL_LIST" Logs #D0D0D0 OFF#", logs_onoff_toggle);
|
||||||
launch_logs_enable = false;
|
launch_logs_enable = false;
|
||||||
|
|
||||||
lv_cont_set_fit(lv_page_get_scrl(lv_win_get_content(win)), false, false);
|
lv_cont_set_fit(lv_page_get_scrl(lv_win_get_content(win)), false, false);
|
||||||
|
@ -1733,6 +1775,7 @@ ini_parsing:
|
||||||
|
|
||||||
icon_path = NULL;
|
icon_path = NULL;
|
||||||
bool payload = false;
|
bool payload = false;
|
||||||
|
bool ofw = false;
|
||||||
bool img_colorize = false;
|
bool img_colorize = false;
|
||||||
bool img_noborder = false;
|
bool img_noborder = false;
|
||||||
lv_img_dsc_t *bmp = NULL;
|
lv_img_dsc_t *bmp = NULL;
|
||||||
|
@ -1745,6 +1788,9 @@ ini_parsing:
|
||||||
icon_path = kv->val;
|
icon_path = kv->val;
|
||||||
else if (!strcmp("payload", kv->key))
|
else if (!strcmp("payload", kv->key))
|
||||||
payload = true;
|
payload = true;
|
||||||
|
else if (!strcmp("ofw", kv->key))
|
||||||
|
if (kv->val[0] == '1')
|
||||||
|
ofw = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// If icon not found, check res folder for section_name.bmp.
|
// If icon not found, check res folder for section_name.bmp.
|
||||||
|
@ -1863,7 +1909,9 @@ ini_parsing:
|
||||||
ext->idx = entry_idx;
|
ext->idx = entry_idx;
|
||||||
|
|
||||||
// Set action.
|
// Set action.
|
||||||
if (!more_cfg)
|
if(ofw)
|
||||||
|
lv_btn_set_action(btns, LV_BTN_ACTION_CLICK, _launch_ofw_action);
|
||||||
|
else if (!more_cfg)
|
||||||
lv_btn_set_action(btns, LV_BTN_ACTION_CLICK, _launch_action);
|
lv_btn_set_action(btns, LV_BTN_ACTION_CLICK, _launch_action);
|
||||||
else
|
else
|
||||||
lv_btn_set_action(btns, LV_BTN_ACTION_CLICK, _launch_more_cfg_action);
|
lv_btn_set_action(btns, LV_BTN_ACTION_CLICK, _launch_more_cfg_action);
|
||||||
|
@ -2276,6 +2324,24 @@ void first_time_bpmp_clock(void *param)
|
||||||
create_nyx_config_entry(false);
|
create_nyx_config_entry(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void _show_mbox_konami(){
|
||||||
|
|
||||||
|
lv_obj_t *dark_bg = lv_obj_create(lv_scr_act(), NULL);
|
||||||
|
lv_obj_set_style(dark_bg, &mbox_darken);
|
||||||
|
lv_obj_set_size(dark_bg, LV_HOR_RES, LV_VER_RES);
|
||||||
|
|
||||||
|
static const char * mbox_btn_map[] = { "\251", "\222OK", "\251", "" };
|
||||||
|
lv_obj_t * mbox = lv_mbox_create(dark_bg, NULL);
|
||||||
|
lv_mbox_set_recolor_text(mbox, true);
|
||||||
|
lv_obj_set_width(mbox, LV_HOR_RES * 5 / 9);
|
||||||
|
|
||||||
|
lv_mbox_set_text(mbox, "#FF8000 Konami Code#\n\n#96FF00 You found a secret!#");
|
||||||
|
lv_mbox_add_btns(mbox, mbox_btn_map, mbox_konami_action);
|
||||||
|
|
||||||
|
lv_obj_align(mbox, NULL, LV_ALIGN_CENTER, 0, 0);
|
||||||
|
lv_obj_set_top(mbox, true);
|
||||||
|
}
|
||||||
|
|
||||||
static void _nyx_main_menu(lv_theme_t * th)
|
static void _nyx_main_menu(lv_theme_t * th)
|
||||||
{
|
{
|
||||||
static lv_style_t no_padding;
|
static lv_style_t no_padding;
|
||||||
|
@ -2446,6 +2512,9 @@ void nyx_load_and_run()
|
||||||
// Create main menu
|
// Create main menu
|
||||||
_nyx_main_menu(th);
|
_nyx_main_menu(th);
|
||||||
|
|
||||||
|
// Register konami code handler
|
||||||
|
register_konami_code_handler(_show_mbox_konami);
|
||||||
|
|
||||||
jc_drv_ctx.cursor = lv_img_create(lv_scr_act(), NULL);
|
jc_drv_ctx.cursor = lv_img_create(lv_scr_act(), NULL);
|
||||||
lv_img_set_src(jc_drv_ctx.cursor, &touch_cursor);
|
lv_img_set_src(jc_drv_ctx.cursor, &touch_cursor);
|
||||||
lv_obj_set_opa_scale(jc_drv_ctx.cursor, LV_OPA_TRANSP);
|
lv_obj_set_opa_scale(jc_drv_ctx.cursor, LV_OPA_TRANSP);
|
||||||
|
|
41
nyx/nyx_gui/frontend/konami.c
Normal file
41
nyx/nyx_gui/frontend/konami.c
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
#include "konami.h"
|
||||||
|
|
||||||
|
// pointer to function
|
||||||
|
static void (*konami_code_handler)(void) = NULL;
|
||||||
|
|
||||||
|
void check_konami_code(jc_gamepad_rpt_t *jc_pad){
|
||||||
|
|
||||||
|
static u32 konami_code[] = {
|
||||||
|
JC_BTNS_UP,
|
||||||
|
JC_BTNS_UP,
|
||||||
|
JC_BTNS_DOWN,
|
||||||
|
JC_BTNS_DOWN,
|
||||||
|
JC_BTNS_LEFT,
|
||||||
|
JC_BTNS_RIGHT,
|
||||||
|
JC_BTNS_LEFT,
|
||||||
|
JC_BTNS_RIGHT,
|
||||||
|
JC_BTNS_B,
|
||||||
|
JC_BTNS_A
|
||||||
|
};
|
||||||
|
|
||||||
|
static u8 konami_code_idx = 0;
|
||||||
|
|
||||||
|
u32 key_pressed = (jc_pad->buttons & konami_code[konami_code_idx]);
|
||||||
|
if (key_pressed && (key_pressed == konami_code[konami_code_idx] || key_pressed == konami_code[(konami_code_idx = 0)]))
|
||||||
|
{
|
||||||
|
konami_code_idx++;
|
||||||
|
if (konami_code_idx == 10)
|
||||||
|
{
|
||||||
|
konami_code_idx = 0;
|
||||||
|
if (konami_code_handler)
|
||||||
|
{
|
||||||
|
(*konami_code_handler)();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void register_konami_code_handler(// pointer to function
|
||||||
|
void (*handler)(void)) {
|
||||||
|
konami_code_handler = handler;
|
||||||
|
}
|
10
nyx/nyx_gui/frontend/konami.h
Normal file
10
nyx/nyx_gui/frontend/konami.h
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
#ifndef _KONAMI_H_
|
||||||
|
#define _KONAMI_H_
|
||||||
|
|
||||||
|
#include <bdk.h>
|
||||||
|
|
||||||
|
void check_konami_code(jc_gamepad_rpt_t *jc_pad);
|
||||||
|
void register_konami_code_handler(// pointer to function
|
||||||
|
void (*handler)(void));
|
||||||
|
|
||||||
|
#endif /* _KONAMI_H_ */
|
|
@ -286,6 +286,8 @@ skip_main_cfg_parse:
|
||||||
n_cfg.jc_force_right = atoi(kv->val) == 1;
|
n_cfg.jc_force_right = atoi(kv->val) == 1;
|
||||||
else if (!strcmp("bpmpclock", kv->key))
|
else if (!strcmp("bpmpclock", kv->key))
|
||||||
n_cfg.bpmp_clock = atoi(kv->val);
|
n_cfg.bpmp_clock = atoi(kv->val);
|
||||||
|
else if (!strcmp("safeui", kv->key))
|
||||||
|
n_cfg.safeui = atoi(kv->val) == 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Reference in a new issue