mirror of
https://gitee.com/anod/open_agb_firm.git
synced 2025-05-08 23:04:13 +08:00
给参数配置添加说明页面
This commit is contained in:
parent
2447941e6c
commit
c79fc2dfc3
@ -40,8 +40,8 @@ typedef void * atp_callerdata_t;
|
|||||||
|
|
||||||
// page option
|
// page option
|
||||||
#define ATP_PAGE_NOOPTION 0
|
#define ATP_PAGE_NOOPTION 0
|
||||||
#define ATP_PAGE_UPDATE 1 // UPDATE THE CURSOR ROW
|
#define ATP_PAGE_UPDATE 2 // UPDATE THE CURSOR ROW
|
||||||
#define ATP_PAGE_REFRESH 2 // UPDATE THE WHOLE PAGE
|
#define ATP_PAGE_REFRESH 3 // UPDATE THE WHOLE PAGE
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
atp_text_t text;
|
atp_text_t text;
|
||||||
|
@ -314,6 +314,8 @@ atp_error_t atp_select( atp_text_t title, atp_counter_t cnt, atp_itemprovider_t
|
|||||||
screen_clean_zone( CONTAINER_LEFTTOP_X, CONTAINER_LEFTTOP_Y+FONT_HEIGHT*(row), CONTAINER_RECT_WIDTH, FONT_HEIGHT );
|
screen_clean_zone( CONTAINER_LEFTTOP_X, CONTAINER_LEFTTOP_Y+FONT_HEIGHT*(row), CONTAINER_RECT_WIDTH, FONT_HEIGHT );
|
||||||
draw_one_option( item_sel, item_sel, row, provider, data );
|
draw_one_option( item_sel, item_sel, row, provider, data );
|
||||||
break;
|
break;
|
||||||
|
case ATP_POWER_OFF:
|
||||||
|
return ATP_POWER_OFF;
|
||||||
default:
|
default:
|
||||||
;
|
;
|
||||||
}
|
}
|
||||||
|
@ -146,10 +146,12 @@ static atp_text_t folder_help[] = {
|
|||||||
"蓝色 目录",
|
"蓝色 目录",
|
||||||
"白色 游戏",
|
"白色 游戏",
|
||||||
"~ ~ ~ ~ ~ ~ ~",
|
"~ ~ ~ ~ ~ ~ ~",
|
||||||
|
"上下方向键 切换选中文件或目录",
|
||||||
|
"左右方向键 翻页",
|
||||||
"A键 查看目录或启动游戏",
|
"A键 查看目录或启动游戏",
|
||||||
"B键 上层文件夹",
|
"B键 上层文件夹",
|
||||||
"X键 金手指",
|
"X键 金手指",
|
||||||
"Y键 游戏设置",
|
"Y键 暂不使用",
|
||||||
"START 查看说明",
|
"START 查看说明",
|
||||||
"SELECT 系统设置"
|
"SELECT 系统设置"
|
||||||
};
|
};
|
||||||
@ -187,26 +189,25 @@ static atp_error_t display_help( atp_callerdata_t table, atp_counter_t index, at
|
|||||||
return ATP_SUCCESS;
|
return ATP_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void help_page( atp_text_t *wording, atp_counter_t length )
|
atp_error_t help_page( atp_text_t *wording, atp_counter_t length )
|
||||||
{
|
{
|
||||||
atp_tips( NULL, "返回:按A/B" );
|
atp_tips( NULL, "返回:按A/B" );
|
||||||
atp_show( length, display_help, (atp_callerdata_t)wording );
|
return atp_show( length, display_help, (atp_callerdata_t)wording );
|
||||||
}
|
}
|
||||||
|
|
||||||
extern void oaf_config_page();
|
extern atp_error_t oaf_config_page();
|
||||||
|
|
||||||
static atp_pageopt_t serve_on_key( atp_callerdata_t data, atp_counter_t, atp_boolean_t x, atp_boolean_t y, atp_boolean_t l, atp_boolean_t r, atp_boolean_t start, atp_boolean_t select )
|
static atp_pageopt_t serve_on_key( atp_callerdata_t data, atp_counter_t, atp_boolean_t x, atp_boolean_t y, atp_boolean_t l, atp_boolean_t r, atp_boolean_t start, atp_boolean_t select )
|
||||||
{
|
{
|
||||||
if( start )
|
if( start )
|
||||||
{
|
{
|
||||||
atp_tips( "", NULL );
|
atp_tips( "", NULL );
|
||||||
help_page( folder_help, sizeof(folder_help)/sizeof(atp_text_t) );
|
return ATP_POWER_OFF == help_page( folder_help, sizeof(folder_help)/sizeof(atp_text_t) )
|
||||||
return ATP_PAGE_REFRESH;
|
? ATP_POWER_OFF : ATP_PAGE_REFRESH;
|
||||||
}
|
}
|
||||||
else if( select )
|
else if( select )
|
||||||
{
|
{
|
||||||
oaf_config_page();
|
return ATP_POWER_OFF == oaf_config_page() ? ATP_POWER_OFF : ATP_PAGE_REFRESH;
|
||||||
return ATP_PAGE_REFRESH;
|
|
||||||
}
|
}
|
||||||
return ATP_PAGE_NOOPTION;
|
return ATP_PAGE_NOOPTION;
|
||||||
}
|
}
|
||||||
|
@ -50,7 +50,7 @@
|
|||||||
"directBoot=false\n" \
|
"directBoot=false\n" \
|
||||||
"useGbaDb=true\n\n" \
|
"useGbaDb=true\n\n" \
|
||||||
"[video]\n" \
|
"[video]\n" \
|
||||||
"scaler=2\n" \
|
"scaler=1\n" \
|
||||||
"gbaGamma=2.2\n" \
|
"gbaGamma=2.2\n" \
|
||||||
"lcdGamma=1.54\n" \
|
"lcdGamma=1.54\n" \
|
||||||
"contrast=1.0\n" \
|
"contrast=1.0\n" \
|
||||||
@ -59,6 +59,11 @@
|
|||||||
"saveOverride=false\n" \
|
"saveOverride=false\n" \
|
||||||
"defaultSave=14"
|
"defaultSave=14"
|
||||||
|
|
||||||
|
#define SAVE_POLICY_GBADB 0
|
||||||
|
#define SAVE_POLICY_FIRM 1
|
||||||
|
#define SAVE_POLICY_SRAM 2
|
||||||
|
#define SAVE_POLICY_POPUP 3
|
||||||
|
#define SAVE_POLICY_SIZE 3
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
@ -81,6 +86,9 @@ typedef struct
|
|||||||
// [advanced]
|
// [advanced]
|
||||||
bool saveOverride;
|
bool saveOverride;
|
||||||
u16 defaultSave;
|
u16 defaultSave;
|
||||||
|
|
||||||
|
// [by-anod]
|
||||||
|
u8 savePolicy;
|
||||||
} OafConfig;
|
} OafConfig;
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
@ -113,17 +121,34 @@ static OafConfig g_oafConfig =
|
|||||||
// [advanced]
|
// [advanced]
|
||||||
false, // saveOverride
|
false, // saveOverride
|
||||||
14 // defaultSave
|
14 // defaultSave
|
||||||
|
|
||||||
|
// [by-anod]
|
||||||
|
, SAVE_POLICY_GBADB // savePolicy
|
||||||
};
|
};
|
||||||
static KHandle g_frameReadyEvent = 0;
|
static KHandle g_frameReadyEvent = 0;
|
||||||
|
|
||||||
// --------------------------
|
// --------------------------
|
||||||
// code for oaf config page
|
// code for oaf config page
|
||||||
// --------------------------
|
// --------------------------
|
||||||
|
atp_text_t config_help[] =
|
||||||
|
{
|
||||||
|
"参数配置操作指引",
|
||||||
|
"---------------",
|
||||||
|
"上下方向键 切换参数项目",
|
||||||
|
"左右方向键 翻页",
|
||||||
|
"L键和R键 调整当前参数",
|
||||||
|
"A键 保存修改退出",
|
||||||
|
"B键 不保存修改退出"
|
||||||
|
};
|
||||||
|
extern atp_error_t help_page( atp_text_t *wording, atp_counter_t length )
|
||||||
|
|
||||||
#define LIGHT_MIN (MCU_getSystemModel() > 3 ? 16 : 20)
|
#define LIGHT_MIN (MCU_getSystemModel() > 3 ? 16 : 20)
|
||||||
#define LIGHT_MAX (MCU_getSystemModel() > 3 ? 142 : 117)
|
#define LIGHT_MAX (MCU_getSystemModel() > 3 ? 142 : 117)
|
||||||
|
#define SCALER_SIZE 3
|
||||||
static atp_error_t config_item( atp_callerdata_t data, atp_counter_t index, atp_itemcfg_t *cfg )
|
static atp_error_t config_item( atp_callerdata_t data, atp_counter_t index, atp_itemcfg_t *cfg )
|
||||||
{
|
{
|
||||||
const char *scaler_val[] = {"上屏无缩放", "上屏GPU放大", "上屏DMA放大", "下屏无缩放"};
|
const char *scaler_val[] = {"上屏无缩放", "上屏GPU放大", "上屏DMA放大", "下屏无缩放"};
|
||||||
|
const char *savetype_name[] = {"和卡带序列号一致", "读取ROM的特定标记", "汉化带SRAM补丁"};
|
||||||
static char buf[16];
|
static char buf[16];
|
||||||
cfg->extra_text_color = ATP_COLOR_GREEN;
|
cfg->extra_text_color = ATP_COLOR_GREEN;
|
||||||
if( index == 0 )
|
if( index == 0 )
|
||||||
@ -146,8 +171,8 @@ static atp_error_t config_item( atp_callerdata_t data, atp_counter_t index, atp_
|
|||||||
}
|
}
|
||||||
else if( index == 3 )
|
else if( index == 3 )
|
||||||
{
|
{
|
||||||
cfg->text = "推测存档类型";
|
cfg->text = "存档方案";
|
||||||
cfg->extra_text = g_oafConfig.saveOverride ? "禁用" : "启用";
|
cfg->extra_text = savetype_name[g_oafConfig.savePolicy];
|
||||||
}
|
}
|
||||||
cfg->value = index;
|
cfg->value = index;
|
||||||
return ATP_SUCCESS;
|
return ATP_SUCCESS;
|
||||||
@ -157,16 +182,15 @@ static atp_pageopt_t config_adjust( atp_callerdata_t data, atp_counter_t index,
|
|||||||
{
|
{
|
||||||
if( l || r )
|
if( l || r )
|
||||||
{
|
{
|
||||||
|
|
||||||
if( index == 0 )
|
if( index == 0 )
|
||||||
{
|
{
|
||||||
u8 light = g_oafConfig.backlight;
|
u8 light = g_oafConfig.backlight;
|
||||||
if( l || x )
|
if( l )
|
||||||
{
|
{
|
||||||
light -= 10;
|
light -= 10;
|
||||||
if( light % 10 ) light += 10 - light%10;
|
if( light % 10 ) light += 10 - light%10;
|
||||||
}
|
}
|
||||||
else if( r || y )
|
else if( r )
|
||||||
{
|
{
|
||||||
light += 10;
|
light += 10;
|
||||||
if( light % 10 ) light -= light % 10;
|
if( light % 10 ) light -= light % 10;
|
||||||
@ -176,20 +200,37 @@ static atp_pageopt_t config_adjust( atp_callerdata_t data, atp_counter_t index,
|
|||||||
g_oafConfig.backlight = light;
|
g_oafConfig.backlight = light;
|
||||||
}
|
}
|
||||||
else if( index == 1 ) g_oafConfig.directBoot = !g_oafConfig.directBoot;
|
else if( index == 1 ) g_oafConfig.directBoot = !g_oafConfig.directBoot;
|
||||||
else if( index == 2 ) g_oafConfig.scaler = ( 4 + ( g_oafConfig.scaler+(l?1:-1) ) ) % 4;
|
else if( index == 2 ) g_oafConfig.scaler = ( SCALER_SIZE + ( g_oafConfig.scaler+(l?-1:1) ) ) % SCALER_SIZE;
|
||||||
else if( index == 3 ) g_oafConfig.saveOverride = !g_oafConfig.saveOverride;
|
else if( index == 3 ) g_oafConfig.savePolicy = ( SAVE_POLICY_SIZE + ( g_oafConfig.savePolicy+(l?-1:1) ) ) % SAVE_POLICY_SIZE;
|
||||||
|
}
|
||||||
|
else if( start )
|
||||||
|
{
|
||||||
|
return ATP_POWER_OFF == help_page( config_help, sizeof(config_help)/sizeof(atp_text_t) )
|
||||||
|
? ATP_POWER_OFF : ATP_PAGE_REFRESH;
|
||||||
}
|
}
|
||||||
return ATP_PAGE_UPDATE;
|
return ATP_PAGE_UPDATE;
|
||||||
}
|
}
|
||||||
|
|
||||||
void oaf_config_page()
|
atp_error_t oaf_config_page()
|
||||||
{
|
{
|
||||||
u8 light = g_oafConfig.backlight;
|
u8 base[sizeof(g_oafConfig)];
|
||||||
atp_select( "参数配置", 4, config_item, config_adjust, NULL, 0, 0, NULL );
|
memcpy( base, g_oafConfig, sizeof(g_oafConfig) );
|
||||||
|
struct OafConfig *prev = &base[0];
|
||||||
|
|
||||||
if( light != g_oafConfig.backlight )
|
atp_error_t res = atp_select( "参数配置", 4, config_item, config_adjust, NULL, 0, 0, NULL );
|
||||||
|
if( res == ATP_NO_ACTION )
|
||||||
|
{
|
||||||
|
memcpy( g_oafConfig, base, sizeof(g_oafConfig) );
|
||||||
|
return ATP_SUCCESS;
|
||||||
|
}
|
||||||
|
else if( res == ATP_SUCCESS )
|
||||||
|
{
|
||||||
|
if( prev->backlight != g_oafConfig.backlight )
|
||||||
GFX_setBrightness(g_oafConfig.backlight, g_oafConfig.backlight);
|
GFX_setBrightness(g_oafConfig.backlight, g_oafConfig.backlight);
|
||||||
|
// TODO : STRING FORMAT AND QUICK SAVE
|
||||||
|
}
|
||||||
|
|
||||||
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
static u32 fixRomPadding(u32 romFileSize)
|
static u32 fixRomPadding(u32 romFileSize)
|
||||||
@ -653,6 +694,11 @@ static int cfgIniCallback(void* user, const char* section, const char* name, con
|
|||||||
if(strcmp(name, "defaultSave") == 0)
|
if(strcmp(name, "defaultSave") == 0)
|
||||||
config->defaultSave = (u16)strtoul(value, NULL, 10);
|
config->defaultSave = (u16)strtoul(value, NULL, 10);
|
||||||
}
|
}
|
||||||
|
else if( strcmp(section, "by-anod") == 0 )
|
||||||
|
{
|
||||||
|
if(strcmp(name, "savePolicy") == 0)
|
||||||
|
config->savePolicy = (u8)strtoul(value, NULL, 10);
|
||||||
|
}
|
||||||
else return 0; // Error.
|
else return 0; // Error.
|
||||||
|
|
||||||
return 1; // 1 is no error? Really?
|
return 1; // 1 is no error? Really?
|
||||||
|
Loading…
x
Reference in New Issue
Block a user