尝试修正红屏

This commit is contained in:
anod 2023-04-24 16:58:54 +08:00
parent a96b81fa2e
commit 0fe6481aed

View File

@ -458,13 +458,8 @@ static atp_error_t select_keys( atp_callerdata_t data, atp_counter_t index, atp_
return ATP_SUCCESS;
}
static atp_error_t select_krp( atp_callerdata_t, atp_counter_t index, atp_itemcfg_t *cfg )
static inline void key_tips( key_remix_t *p, atp_itemcfg_t *cfg )
{
static char name[20];
ee_snprintf(name, sizeof(name), "键位配置项%d", index+1);
cfg->text = name;
cfg->value = index;
key_remix_t *p = &g_keyremixConfig[index];
if( p->remix_type == REMIX_TYPE_NONE )
{
cfg->extra_text = "未添加";
@ -485,6 +480,16 @@ static atp_error_t select_krp( atp_callerdata_t, atp_counter_t index, atp_itemcf
cfg->extra_text = "自动蓄力";
cfg->extra_text_color = ATP_COLOR_MAGENTA;
}
}
static atp_error_t select_krp( atp_callerdata_t, atp_counter_t index, atp_itemcfg_t *cfg )
{
static char name[20];
ee_snprintf(name, sizeof(name), "键位配置项%d", index+1);
cfg->text = name;
cfg->value = index;
key_remix_t *p = &g_keyremixConfig[index];
key_tips(p, cfg);
return ATP_SUCCESS;
}
@ -493,10 +498,36 @@ static atp_error_t select_krp( atp_callerdata_t, atp_counter_t index, atp_itemcf
#define KRFIELD_DEVICE 1
#define KRFIELD_GAME 2
static atp_error_t select_kcf( atp_callerdata_t, atp_counter_t index, atp_itemcfg_t *cfg )
const char *key_name[] = {
"", "", "", "", "A", "B", "L", "R", "SELECT", "START", "X", "Y", "ZL", "ZR"
};
const u16 key_val[] = {
KEY_DUP, KEY_DDOWN, KEY_DLEFT, KEY_DRIGHT, KEY_A, KEY_B, KEY_L, KEY_R, KEY_SELECT, KEY_START, KEY_X, KEY_Y, KEY_ZL, KEY_ZR
};
#define key_val_len (sizeof(key_val)/sizeof(u16))
static atp_error_t select_kcf( atp_callerdata_t p, atp_counter_t index, atp_itemcfg_t *cfg )
{
if( index == KRFIELD_REMIX ) cfg->text = "选择键位功能";
else if( index == KRFIELD_DEVICE ) cfg->text = "选择实机键位";
key_remix_t *kcfg = (key_remix_t*)p;
if( index == KRFIELD_REMIX )
{
cfg->text = "选择键位功能";
key_tips(kcfg, cfg);)
}
else if( index == KRFIELD_DEVICE )
{
cfg->text = "选择实机键位";
if( kcfg->device_keys )
{
for( int i=0; i < key_val_len; ++i)
{
if( key_val[i] == kcfg->device_keys )
{
cfg->extra_text = key_name[i];
cfg->extra_text_color = ATP_COLOR_BLUE;
}
}
}
}
else if( index == KRFIELD_GAME ) cfg->text = "游戏中对应键位";
cfg->value = index;
return ATP_SUCCESS;
@ -512,17 +543,8 @@ static atp_error_t select_remixtype( atp_callerdata_t, atp_counter_t index, atp_
return ATP_SUCCESS;
}
const char *key_name[] = {
"", "", "", "", "A", "B", "L", "R", "SELECT", "START", "X", "Y", "ZL", "ZR"
};
const u16 key_val[] = {
KEY_DUP, KEY_DDOWN, KEY_DLEFT, KEY_DRIGHT, KEY_A, KEY_B, KEY_L, KEY_R, KEY_SELECT, KEY_START, KEY_X, KEY_Y, KEY_ZL, KEY_ZR
};
static atp_error_t select_hostkey( atp_callerdata_t data, atp_counter_t index, atp_itemcfg_t *cfg )
static atp_error_t select_hostkey( atp_callerdata_t len, atp_counter_t index, atp_itemcfg_t *cfg )
{
u32 mix = (u32)data;
u16 len = mix & 0xffff;
u16 key = mix >> 16;
if( len == 1 ) // cheat
{
cfg->text = "HOME";
@ -532,11 +554,6 @@ static atp_error_t select_hostkey( atp_callerdata_t data, atp_counter_t index, a
{
cfg->text = key_name[index];
cfg->value = key_val[index];
if( index == key )
{
cfg->extra_text = '';
cfg->extra_text_color = ATP_COLOR_GREEN;
}
}
return ATP_SUCCESS;
}
@ -763,7 +780,8 @@ static atp_pageopt_t serve_on_key( atp_callerdata_t data, atp_counter_t index, a
else if( status == DISP_SETK )
{
ee_snprintf(tips, sizeof(tips), "编辑配置项%d", position+1);
res = atp_select( tips, 3, select_kcf, NULL, NULL, 0, 0, &field );
key_remix_t *cur = &g_keyremixConfig[position];
res = atp_select( tips, 3, select_kcf, NULL, cur, 0, 0, &field );
if( res == ATP_SUCCESS )
{
status = field == KRFIELD_REMIX ? DISP_KMAP : (field == KRFIELD_DEVICE ? DISP_3DSK : DISP_GBAK);
@ -806,7 +824,7 @@ static atp_pageopt_t serve_on_key( atp_callerdata_t data, atp_counter_t index, a
break;
}
}
res = atp_select( "选择实机键位(单选)", keys_count, select_hostkey, NULL, (selected<<16)|(keys_count&0xffff), 0, 0, &value);
res = atp_select( "选择实机键位(单选)", keys_count, select_hostkey, NULL, keys_count, selected>keys_count?0:selected, 0, &value);
if( res == ATP_SUCCESS )
{
cur->device_keys = value;