修改一下保存键位设定的路径

This commit is contained in:
anod 2023-04-28 08:10:15 +08:00
parent 8fe31182c3
commit d06567768c
2 changed files with 29 additions and 21 deletions

View File

@ -29,7 +29,7 @@ extern key_remix_t g_keyremixConfig[KEY_REMIX_LIMIT];
uint16_t keyremix_cheatkey(); uint16_t keyremix_cheatkey();
void keyremix_freeze(); void keyremix_freeze();
void keyremix_update( uint16_t active_cheatkey ); void keyremix_update( uint16_t active_cheatkey );
const char* keyremix_dump( char* gbafile ); const char* keyremix_dump( const char* gbafile );
const char* keyremix_load( char* gbafile ); const char* keyremix_load( const char* gbafile );
#endif//_KEY_REMIX_H_ #endif//_KEY_REMIX_H_

View File

@ -10,6 +10,8 @@ static phykey_t prev_status = 0;
static conkey_t blind_conkey; static conkey_t blind_conkey;
static u16 flags_holding = 0; static u16 flags_holding = 0;
#define OUTPUT_DIR "keymaps/"
#define VKEY_HOME (1u<<21) #define VKEY_HOME (1u<<21)
#define now_release( now, prev, key ) ((~(now))&(prev)&(key)) #define now_release( now, prev, key ) ((~(now))&(prev)&(key))
#define CON_KEY_MASK (KEY_A|KEY_B|KEY_L|KEY_R|KEY_SELECT|KEY_START|KEY_DUP|KEY_DDOWN|KEY_DLEFT|KEY_DRIGHT) #define CON_KEY_MASK (KEY_A|KEY_B|KEY_L|KEY_R|KEY_SELECT|KEY_START|KEY_DUP|KEY_DDOWN|KEY_DLEFT|KEY_DRIGHT)
@ -130,38 +132,44 @@ void keyremix_update( uint16_t active_cheatkey )
const char* keyremix_load( char *file ) const char* keyremix_load( char *file )
{ {
char output[512];
int len = strlen( file ) + strlen(OUTPUT_DIR);
if( len+1 > 512 ) return "文件名太长,无法保存";
strcpy( output, OUTPUT_DIR );
strcpy( &output[strlen(OUTPUT_DIR)], file );
output[len] = '\0';
output[len-1] = 'm';
output[len-2] = 'r';
output[len-3] = 'k';
FILINFO fi; FILINFO fi;
int len = strlen( file );
file[len-1] = 'm';
file[len-2] = 'r';
file[len-3] = 'k';
const char *retval = NULL; const char *retval = NULL;
if( fStat(file, &fi) == RES_OK ) if( fStat(output, &fi) == RES_OK )
{ {
u8 dat[sizeof(g_keyremixConfig)]; u8 dat[sizeof(g_keyremixConfig)];
if( RES_OK == fsQuickRead(file, dat, 8 ) ) if( RES_OK == fsQuickRead(output, dat, sizeof(dat) ) )
memcpy( g_keyremixConfig, dat, sizeof(g_keyremixConfig) ); memcpy( g_keyremixConfig, dat, sizeof(g_keyremixConfig) );
else retval = "读文件失败"; else retval = "读文件失败";
} }
else retval = "文件不存在"; else retval = "文件不存在";
file[len-1] = 'a';
file[len-2] = 'b';
file[len-3] = 'g';
return retval; return retval;
} }
const char* keyremix_dump( char *file ) const char* keyremix_dump( const char *file )
{ {
char output[512];
FILINFO fi; FILINFO fi;
int len = strlen( file ); int len = strlen( file ) + strlen(OUTPUT_DIR);
file[len-1] = 'm'; if( len+1 > 512 ) return "文件名太长,无法保存";
file[len-2] = 'r'; strcpy( output, OUTPUT_DIR );
file[len-3] = 'k'; strcpy( &output[strlen(OUTPUT_DIR)], file );
output[len] = '\0';
output[len-1] = 'm';
output[len-2] = 'r';
output[len-3] = 'k';
const char *retval = NULL; const char *retval = NULL;
if( RES_OK != fsQuickWrite(file, g_keyremixConfig, sizeof(g_keyremixConfig) ) ) if( RES_OK != fsQuickWrite(output, g_keyremixConfig, sizeof(g_keyremixConfig)) )
retval = "保存失败"; retval = "保存失败";
file[len-1] = 'a';
file[len-2] = 'b';
file[len-3] = 'g';
return retval; return retval;
} }