C89_BUILD fixes

This commit is contained in:
twinaphex 2018-08-07 03:50:10 +02:00
parent 2bf3ec2000
commit f523fec4d2
6 changed files with 125 additions and 219 deletions

View File

@ -6406,6 +6406,7 @@ MSG_HASH(
MENU_ENUM_LABEL_VALUE_QT_LOG, MENU_ENUM_LABEL_VALUE_QT_LOG,
"Log" "Log"
) )
#ifdef HAVE_QT
MSG_HASH( MSG_HASH(
MENU_ENUM_LABEL_VALUE_QT_SCAN_FINISHED, MENU_ENUM_LABEL_VALUE_QT_SCAN_FINISHED,
"Escaneo Terminado.<br><br>\n" "Escaneo Terminado.<br><br>\n"
@ -6416,6 +6417,7 @@ MSG_HASH(
"<li>reiniciar RetroArch si actualizaste algo con el \"Actualizador en línea\"</li></ul>\n" "<li>reiniciar RetroArch si actualizaste algo con el \"Actualizador en línea\"</li></ul>\n"
"Por último, el contenido debe coincidir las bases de datos existente de <a href=\"https://docs.libretro.com/guides/roms-playlists-thumbnails/#sources\">aquí</a>. Si aún no funciona, considere <a href=\"https://www.github.com/libretro/RetroArch/issues\">enviar un reporte de error.</a>" "Por último, el contenido debe coincidir las bases de datos existente de <a href=\"https://docs.libretro.com/guides/roms-playlists-thumbnails/#sources\">aquí</a>. Si aún no funciona, considere <a href=\"https://www.github.com/libretro/RetroArch/issues\">enviar un reporte de error.</a>"
) )
#endif
MSG_HASH( MSG_HASH(
MENU_ENUM_LABEL_VALUE_QT_DONT_SHOW_AGAIN, MENU_ENUM_LABEL_VALUE_QT_DONT_SHOW_AGAIN,
"No mostrar esto de nuevo" "No mostrar esto de nuevo"

View File

@ -3642,6 +3642,7 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_QT_RESTART_TO_TAKE_EFFECT,
"Por favor, reinicie o programa para que as alterações entrem em vigor.") "Por favor, reinicie o programa para que as alterações entrem em vigor.")
MSG_HASH(MENU_ENUM_LABEL_VALUE_QT_LOG, MSG_HASH(MENU_ENUM_LABEL_VALUE_QT_LOG,
"Relatório") "Relatório")
#ifdef HAVE_QT
MSG_HASH(MENU_ENUM_LABEL_VALUE_QT_SCAN_FINISHED, MSG_HASH(MENU_ENUM_LABEL_VALUE_QT_SCAN_FINISHED,
"Verificação Terminada.<br><br>\n" "Verificação Terminada.<br><br>\n"
"Para que o conteúdo seja verificado corretamente, você deve em ordem:\n" "Para que o conteúdo seja verificado corretamente, você deve em ordem:\n"
@ -3650,6 +3651,7 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_QT_SCAN_FINISHED,
"<li>ter a \"Base de Dados\" atualizada via Atualizador Online</li>\n" "<li>ter a \"Base de Dados\" atualizada via Atualizador Online</li>\n"
"<li>reiniciar o RetroArch caso alguma das situações acima tenha sido feita</li></ul>\n" "<li>reiniciar o RetroArch caso alguma das situações acima tenha sido feita</li></ul>\n"
"E finalmente, o conteúdo deve corresponder as bases de dados existentes <a href=\"https://docs.libretro.com/guides/roms-playlists-thumbnails/#sources\">aqui</a>. Se ainda não estiver funcionando, considere <a href=\"https://www.github.com/libretro/RetroArch/issues\">enviar um relatório de erro</a>.") "E finalmente, o conteúdo deve corresponder as bases de dados existentes <a href=\"https://docs.libretro.com/guides/roms-playlists-thumbnails/#sources\">aqui</a>. Se ainda não estiver funcionando, considere <a href=\"https://www.github.com/libretro/RetroArch/issues\">enviar um relatório de erro</a>.")
#endif
MSG_HASH(MENU_ENUM_LABEL_VALUE_QT_DONT_SHOW_AGAIN, MSG_HASH(MENU_ENUM_LABEL_VALUE_QT_DONT_SHOW_AGAIN,
"Não mostrar isto novamente") "Não mostrar isto novamente")
MSG_HASH(MENU_ENUM_LABEL_VALUE_QT_STOP, MSG_HASH(MENU_ENUM_LABEL_VALUE_QT_STOP,

View File

@ -3307,7 +3307,7 @@ MSG_HASH(MENU_ENUM_SUBLABEL_MIXER_ACTION_VOLUME,
MSG_HASH(MENU_ENUM_SUBLABEL_ADD_TO_MIXER, MSG_HASH(MENU_ENUM_SUBLABEL_ADD_TO_MIXER,
"Добавить этот трек в доступный аудио слот. ") "Добавить этот трек в доступный аудио слот. ")
MSG_HASH(MENU_ENUM_SUBLABEL_ADD_TO_MIXER_AND_PLAY, MSG_HASH(MENU_ENUM_SUBLABEL_ADD_TO_MIXER_AND_PLAY,
"Добавить этот трек в доступный аудио слот и воспроизвести его.") // If no slots are currently available, it will be ignored. "Добавить этот трек в доступный аудио слот и воспроизвести его.")
MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_PLAY, MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_PLAY,
"Воспроизвести") "Воспроизвести")
MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_PLAY_LOOPED, MSG_HASH(MENU_ENUM_LABEL_VALUE_MIXER_ACTION_PLAY_LOOPED,
@ -3335,20 +3335,20 @@ MSG_HASH(MENU_ENUM_LABEL_VALUE_LATENCY_SETTINGS,
MSG_HASH(MENU_ENUM_SUBLABEL_LATENCY_SETTINGS, MSG_HASH(MENU_ENUM_SUBLABEL_LATENCY_SETTINGS,
"Изменить настройки относящиеся к задержке видео, аудио и ввода.") "Изменить настройки относящиеся к задержке видео, аудио и ввода.")
MSG_HASH(MENU_ENUM_LABEL_VALUE_RUN_AHEAD_ENABLED, MSG_HASH(MENU_ENUM_LABEL_VALUE_RUN_AHEAD_ENABLED,
"Обгон для уменьшения задержки") // Run-Ahead to Reduce Latency "Обгон для уменьшения задержки")
MSG_HASH(MENU_ENUM_LABEL_VALUE_RUN_AHEAD_FRAMES, MSG_HASH(MENU_ENUM_LABEL_VALUE_RUN_AHEAD_FRAMES,
"Количество кадров для обгона")//Number of Frames to Run Ahead "Количество кадров для обгона")
MSG_HASH(MENU_ENUM_LABEL_VALUE_RUN_AHEAD_SECONDARY_INSTANCE, MSG_HASH(MENU_ENUM_LABEL_VALUE_RUN_AHEAD_SECONDARY_INSTANCE,
"Использовать вторую инстанцию для обгона") //RunAhead Use Second Instance "Использовать вторую инстанцию для обгона")
MSG_HASH(MENU_ENUM_LABEL_VALUE_RUN_AHEAD_HIDE_WARNINGS, MSG_HASH(MENU_ENUM_LABEL_VALUE_RUN_AHEAD_HIDE_WARNINGS,
"Убрать уведомления об обгоне")//RunAhead Hide Warnings "Убрать уведомления об обгоне")
MSG_HASH( MSG_HASH(
MENU_ENUM_SUBLABEL_RUN_AHEAD_ENABLED, MENU_ENUM_SUBLABEL_RUN_AHEAD_ENABLED,
"Обрабатывать логику ядра перед рендером 1 или более кадров для уменьшения задержки ввода." // Run core logic one or more frames ahead then load the state back to reduce perceived input lag. "Обрабатывать логику ядра перед рендером 1 или более кадров для уменьшения задержки ввода."
) )
MSG_HASH( MSG_HASH(
MENU_ENUM_SUBLABEL_RUN_AHEAD_FRAMES, MENU_ENUM_SUBLABEL_RUN_AHEAD_FRAMES,
"Количество кадров обгона. Может вызвать дрожание при большом значении." // Causes gameplay issues such as jitter if you exceed the number of lag frames internal to the game. "Количество кадров обгона. Может вызвать дрожание при большом значении."
) )
MSG_HASH( MSG_HASH(
MENU_ENUM_SUBLABEL_RUN_AHEAD_HIDE_WARNINGS, MENU_ENUM_SUBLABEL_RUN_AHEAD_HIDE_WARNINGS,

View File

@ -197,21 +197,20 @@ bool cheat_manager_save(const char *path, const char *cheat_database, bool overw
for (j = 0; j < 13; j++) for (j = 0; j < 13; j++)
{ {
unsigned int* data_ptrs[13] = { unsigned int* data_ptrs[13] = { NULL};
&cheat_manager_state.cheats[i].handler, data_ptrs[0] = &cheat_manager_state.cheats[i].handler;
&cheat_manager_state.cheats[i].memory_search_size, data_ptrs[1] = &cheat_manager_state.cheats[i].memory_search_size;
&cheat_manager_state.cheats[i].cheat_type, data_ptrs[2] = &cheat_manager_state.cheats[i].cheat_type;
&cheat_manager_state.cheats[i].value, data_ptrs[3] = &cheat_manager_state.cheats[i].value;
&cheat_manager_state.cheats[i].address, data_ptrs[4] = &cheat_manager_state.cheats[i].address;
&cheat_manager_state.cheats[i].address_mask, data_ptrs[5] = &cheat_manager_state.cheats[i].address_mask;
&cheat_manager_state.cheats[i].rumble_type, data_ptrs[6] = &cheat_manager_state.cheats[i].rumble_type;
&cheat_manager_state.cheats[i].rumble_value , data_ptrs[7] = &cheat_manager_state.cheats[i].rumble_value;
&cheat_manager_state.cheats[i].rumble_port, data_ptrs[8] = &cheat_manager_state.cheats[i].rumble_port;
&cheat_manager_state.cheats[i].rumble_primary_strength, data_ptrs[9] = &cheat_manager_state.cheats[i].rumble_primary_strength;
&cheat_manager_state.cheats[i].rumble_primary_duration, data_ptrs[10] = &cheat_manager_state.cheats[i].rumble_primary_duration;
&cheat_manager_state.cheats[i].rumble_secondary_strength, data_ptrs[11] = &cheat_manager_state.cheats[i].rumble_secondary_strength;
&cheat_manager_state.cheats[i].rumble_secondary_duration data_ptrs[12] = &cheat_manager_state.cheats[i].rumble_secondary_duration;
} ;
key[0] = '\0'; key[0] = '\0';
snprintf(key, sizeof(key), keys[j], i); snprintf(key, sizeof(key), keys[j], i);
config_set_uint(conf, key, *(data_ptrs[j])); config_set_uint(conf, key, *(data_ptrs[j]));
@ -330,21 +329,13 @@ bool cheat_manager_load(const char *path, bool append)
for (i = orig_size; i < cheats; i++) for (i = orig_size; i < cheats; i++)
{ {
unsigned j; unsigned j;
unsigned int* data_ptrs[13] = { char desc_key[256];
&cheat_manager_state.cheats[i].handler, char code_key[256];
&cheat_manager_state.cheats[i].memory_search_size, char enable_key[256];
&cheat_manager_state.cheats[i].cheat_type, char endian_key[256];
&cheat_manager_state.cheats[i].value, char *tmp = NULL;
&cheat_manager_state.cheats[i].address, bool tmp_bool = false;
&cheat_manager_state.cheats[i].address_mask, unsigned int* data_ptrs[13] = { NULL};
&cheat_manager_state.cheats[i].rumble_type,
&cheat_manager_state.cheats[i].rumble_value ,
&cheat_manager_state.cheats[i].rumble_port,
&cheat_manager_state.cheats[i].rumble_primary_strength,
&cheat_manager_state.cheats[i].rumble_primary_duration,
&cheat_manager_state.cheats[i].rumble_secondary_strength,
&cheat_manager_state.cheats[i].rumble_secondary_duration
} ;
char* keys[13] = { char* keys[13] = {
"cheat%u_handler", "cheat%u_handler",
"cheat%u_memory_search_size", "cheat%u_memory_search_size",
@ -360,12 +351,19 @@ bool cheat_manager_load(const char *path, bool append)
"cheat%u_rumble_secondary_strength", "cheat%u_rumble_secondary_strength",
"cheat%u_rumble_secondary_duration", "cheat%u_rumble_secondary_duration",
}; };
char desc_key[256]; data_ptrs[0] = &cheat_manager_state.cheats[i].handler;
char code_key[256]; data_ptrs[1] = &cheat_manager_state.cheats[i].memory_search_size;
char enable_key[256]; data_ptrs[2] = &cheat_manager_state.cheats[i].cheat_type;
char endian_key[256]; data_ptrs[3] = &cheat_manager_state.cheats[i].value;
char *tmp = NULL; data_ptrs[4] = &cheat_manager_state.cheats[i].address;
bool tmp_bool = false; data_ptrs[5] = &cheat_manager_state.cheats[i].address_mask;
data_ptrs[6] = &cheat_manager_state.cheats[i].rumble_type;
data_ptrs[7] = &cheat_manager_state.cheats[i].rumble_value;
data_ptrs[8] = &cheat_manager_state.cheats[i].rumble_port;
data_ptrs[9] = &cheat_manager_state.cheats[i].rumble_primary_strength;
data_ptrs[10] = &cheat_manager_state.cheats[i].rumble_primary_duration;
data_ptrs[11] = &cheat_manager_state.cheats[i].rumble_secondary_strength;
data_ptrs[12] = &cheat_manager_state.cheats[i].rumble_secondary_duration;
endian_key[0] = desc_key[0] = code_key[0] = enable_key[0] = '\0'; endian_key[0] = desc_key[0] = code_key[0] = enable_key[0] = '\0';
@ -827,12 +825,12 @@ int cheat_manager_search(enum cheat_search_type search_type)
cheat_manager_setup_search_meta(cheat_manager_state.search_bit_size, &bytes_per_item, &mask, &bits) ; cheat_manager_setup_search_meta(cheat_manager_state.search_bit_size, &bytes_per_item, &mask, &bits) ;
//little endian FF000000 = 256 /* little endian FF000000 = 256 */
for ( idx = 0 ; idx < cheat_manager_state.total_memory_size ; idx = idx + bytes_per_item) for (idx = 0 ; idx < cheat_manager_state.total_memory_size ; idx = idx + bytes_per_item)
{ {
unsigned byte_part; unsigned byte_part;
switch ( bytes_per_item ) switch (bytes_per_item )
{ {
case 2 : case 2 :
{ {
@ -869,85 +867,57 @@ int cheat_manager_search(enum cheat_search_type search_type)
unsigned int prev_subval = (prev_val >> (byte_part*bits) ) & mask ; unsigned int prev_subval = (prev_val >> (byte_part*bits) ) & mask ;
unsigned int prev_match ; unsigned int prev_match ;
if ( bits < 8 ) if (bits < 8 )
{
prev_match = *(cheat_manager_state.matches+idx) & (mask << (byte_part*bits)) ; prev_match = *(cheat_manager_state.matches+idx) & (mask << (byte_part*bits)) ;
}
else else
{
prev_match = *(cheat_manager_state.matches+idx) ; prev_match = *(cheat_manager_state.matches+idx) ;
}
if ( prev_match > 0 ) if (prev_match > 0)
{ {
bool match = false ; bool match = false ;
switch ( search_type ) switch (search_type)
{ {
case CHEAT_SEARCH_TYPE_EXACT : case CHEAT_SEARCH_TYPE_EXACT :
{
match = ( curr_subval == cheat_manager_state.search_exact_value) ; match = ( curr_subval == cheat_manager_state.search_exact_value) ;
break; break;
}
case CHEAT_SEARCH_TYPE_LT : case CHEAT_SEARCH_TYPE_LT :
{
match = ( curr_subval < prev_subval) ; match = ( curr_subval < prev_subval) ;
break; break;
}
case CHEAT_SEARCH_TYPE_GT : case CHEAT_SEARCH_TYPE_GT :
{
match = ( curr_subval > prev_subval) ; match = ( curr_subval > prev_subval) ;
break; break;
}
case CHEAT_SEARCH_TYPE_LTE : case CHEAT_SEARCH_TYPE_LTE :
{
match = ( curr_subval <= prev_subval) ; match = ( curr_subval <= prev_subval) ;
break; break;
}
case CHEAT_SEARCH_TYPE_GTE : case CHEAT_SEARCH_TYPE_GTE :
{
match = ( curr_subval >= prev_subval) ; match = ( curr_subval >= prev_subval) ;
break; break;
}
case CHEAT_SEARCH_TYPE_EQ : case CHEAT_SEARCH_TYPE_EQ :
{
match = ( curr_subval == prev_subval) ; match = ( curr_subval == prev_subval) ;
break; break;
}
case CHEAT_SEARCH_TYPE_NEQ : case CHEAT_SEARCH_TYPE_NEQ :
{
match = ( curr_subval != prev_subval) ; match = ( curr_subval != prev_subval) ;
break; break;
}
case CHEAT_SEARCH_TYPE_EQPLUS : case CHEAT_SEARCH_TYPE_EQPLUS :
{
match = ( curr_subval == prev_subval+cheat_manager_state.search_eqplus_value) ; match = ( curr_subval == prev_subval+cheat_manager_state.search_eqplus_value) ;
break; break;
}
case CHEAT_SEARCH_TYPE_EQMINUS : case CHEAT_SEARCH_TYPE_EQMINUS :
{
match = ( curr_subval == prev_subval-cheat_manager_state.search_eqminus_value) ; match = ( curr_subval == prev_subval-cheat_manager_state.search_eqminus_value) ;
break; break;
} }
}
if (!match ) if (!match )
{ {
if ( bits < 8 ) if ( bits < 8 )
{
*(cheat_manager_state.matches+idx) = *(cheat_manager_state.matches+idx) & *(cheat_manager_state.matches+idx) = *(cheat_manager_state.matches+idx) &
(( ~(mask << (byte_part*bits))) & 0xFF ); (( ~(mask << (byte_part*bits))) & 0xFF );
}
else else
{
memset(cheat_manager_state.matches+idx,0,bytes_per_item) ; memset(cheat_manager_state.matches+idx,0,bytes_per_item) ;
}
if ( cheat_manager_state.num_matches > 0 ) if ( cheat_manager_state.num_matches > 0 )
{
cheat_manager_state.num_matches-- ; cheat_manager_state.num_matches-- ;
} }
} }
} }
} }
}
memcpy(cheat_manager_state.prev_memory_buf, cheat_manager_state.curr_memory_buf, cheat_manager_state.actual_memory_size); memcpy(cheat_manager_state.prev_memory_buf, cheat_manager_state.curr_memory_buf, cheat_manager_state.actual_memory_size);
@ -1003,36 +973,30 @@ int cheat_manager_add_matches(const char *path,
switch ( bytes_per_item ) switch ( bytes_per_item )
{ {
case 2 : case 2 :
{
curr_val = cheat_manager_state.big_endian ? curr_val = cheat_manager_state.big_endian ?
(*(curr+idx)*256) + *(curr+idx+1) : (*(curr+idx)*256) + *(curr+idx+1) :
*(curr+idx) + (*(curr+idx+1)*256) ; *(curr+idx) + (*(curr+idx+1)*256) ;
break ; break ;
}
case 4 : case 4 :
{
curr_val = cheat_manager_state.big_endian ? curr_val = cheat_manager_state.big_endian ?
(*(curr+idx)*256*256*256) + (*(curr+idx+1)*256*256) + (*(curr+idx+2)*256) + *(curr+idx+3) : (*(curr+idx)*256*256*256) + (*(curr+idx+1)*256*256) + (*(curr+idx+2)*256) + *(curr+idx+3) :
*(curr+idx) + (*(curr+idx+1)*256) + (*(curr+idx+2)*256*256) + (*(curr+idx+3)*256*256*256) ; *(curr+idx) + (*(curr+idx+1)*256) + (*(curr+idx+2)*256*256) + (*(curr+idx+3)*256*256*256) ;
break ; break ;
}
case 1 : case 1 :
default : default :
{
curr_val = *(curr+idx) ; curr_val = *(curr+idx) ;
break ; break ;
} }
}
for (byte_part = 0 ; byte_part < 8/bits ; byte_part++) for (byte_part = 0 ; byte_part < 8/bits ; byte_part++)
{ {
unsigned int prev_match; unsigned int prev_match;
if ( bits < 8 ) if (bits < 8 )
{ {
prev_match = *(cheat_manager_state.matches+idx) & (mask << (byte_part*bits)) ; prev_match = *(cheat_manager_state.matches+idx) & (mask << (byte_part*bits)) ;
if ( prev_match ) if (prev_match)
{ {
if ( !cheat_manager_add_new_code(cheat_manager_state.search_bit_size, idx, (mask << (byte_part*bits)), if (!cheat_manager_add_new_code(cheat_manager_state.search_bit_size, idx, (mask << (byte_part*bits)),
cheat_manager_state.big_endian, curr_val) ) cheat_manager_state.big_endian, curr_val) )
{ {
runloop_msg_queue_push(msg_hash_to_str(MSG_CHEAT_SEARCH_ADDED_MATCHES_FAIL), 1, 180, true); runloop_msg_queue_push(msg_hash_to_str(MSG_CHEAT_SEARCH_ADDED_MATCHES_FAIL), 1, 180, true);
@ -1044,10 +1008,10 @@ int cheat_manager_add_matches(const char *path,
else else
{ {
prev_match = *(cheat_manager_state.matches+idx) ; prev_match = *(cheat_manager_state.matches+idx) ;
if ( prev_match ) if (prev_match)
{ {
if ( !cheat_manager_add_new_code(cheat_manager_state.search_bit_size, idx, 0xFF, if (!cheat_manager_add_new_code(cheat_manager_state.search_bit_size, idx, 0xFF,
cheat_manager_state.big_endian, curr_val) ) cheat_manager_state.big_endian, curr_val))
{ {
runloop_msg_queue_push(msg_hash_to_str(MSG_CHEAT_SEARCH_ADDED_MATCHES_FAIL), 1, 180, true); runloop_msg_queue_push(msg_hash_to_str(MSG_CHEAT_SEARCH_ADDED_MATCHES_FAIL), 1, 180, true);
return 0 ; return 0 ;
@ -1074,61 +1038,44 @@ void cheat_manager_apply_rumble(struct item_cheat *cheat, unsigned int curr_valu
{ {
bool rumble = false ; bool rumble = false ;
switch ( cheat->rumble_type ) switch (cheat->rumble_type)
{ {
case RUMBLE_TYPE_DISABLED : case RUMBLE_TYPE_DISABLED :
{ return;
return ;
}
case RUMBLE_TYPE_CHANGES: case RUMBLE_TYPE_CHANGES:
{
rumble = (curr_value != cheat->rumble_prev_value) ; rumble = (curr_value != cheat->rumble_prev_value) ;
break ; break ;
}
case RUMBLE_TYPE_DOES_NOT_CHANGE: case RUMBLE_TYPE_DOES_NOT_CHANGE:
{
rumble = (curr_value == cheat->rumble_prev_value) ; rumble = (curr_value == cheat->rumble_prev_value) ;
break ; break ;
}
case RUMBLE_TYPE_INCREASE: case RUMBLE_TYPE_INCREASE:
{
rumble = (curr_value > cheat->rumble_prev_value) ; rumble = (curr_value > cheat->rumble_prev_value) ;
break ; break ;
}
case RUMBLE_TYPE_DECREASE: case RUMBLE_TYPE_DECREASE:
{
rumble = (curr_value < cheat->rumble_prev_value) ; rumble = (curr_value < cheat->rumble_prev_value) ;
break ; break ;
}
case RUMBLE_TYPE_EQ_VALUE: case RUMBLE_TYPE_EQ_VALUE:
{
rumble = (curr_value == cheat->rumble_value) ; rumble = (curr_value == cheat->rumble_value) ;
break ; break ;
}
case RUMBLE_TYPE_NEQ_VALUE: case RUMBLE_TYPE_NEQ_VALUE:
{
rumble = (curr_value != cheat->rumble_value) ; rumble = (curr_value != cheat->rumble_value) ;
break ; break ;
}
case RUMBLE_TYPE_LT_VALUE: case RUMBLE_TYPE_LT_VALUE:
{
rumble = (curr_value < cheat->rumble_value) ; rumble = (curr_value < cheat->rumble_value) ;
break ; break ;
}
case RUMBLE_TYPE_GT_VALUE: case RUMBLE_TYPE_GT_VALUE:
{
rumble = (curr_value > cheat->rumble_value) ; rumble = (curr_value > cheat->rumble_value) ;
break ; break ;
}
} }
cheat->rumble_prev_value = curr_value ; cheat->rumble_prev_value = curr_value ;
//Give the emulator enough time to initialize, load state, etc /* Give the emulator enough time
if ( cheat->rumble_initialized > 300) * to initialize, load state, etc */
if (cheat->rumble_initialized > 300)
{ {
if ( rumble ) if (rumble)
{ {
cheat->rumble_primary_end_time = cpu_features_get_time_usec() + (cheat->rumble_primary_duration*1000) ; cheat->rumble_primary_end_time = cpu_features_get_time_usec() + (cheat->rumble_primary_duration*1000) ;
cheat->rumble_secondary_end_time = cpu_features_get_time_usec() + (cheat->rumble_secondary_duration*1000) ; cheat->rumble_secondary_end_time = cpu_features_get_time_usec() + (cheat->rumble_secondary_duration*1000) ;
@ -1139,12 +1086,12 @@ void cheat_manager_apply_rumble(struct item_cheat *cheat, unsigned int curr_valu
else else
{ {
cheat->rumble_initialized++ ; cheat->rumble_initialized++ ;
return ; return;
} }
if ( cheat->rumble_primary_end_time <= cpu_features_get_time_usec() ) if (cheat->rumble_primary_end_time <= cpu_features_get_time_usec() )
{ {
if ( cheat->rumble_primary_end_time != 0 ) if (cheat->rumble_primary_end_time != 0)
input_driver_set_rumble_state(cheat->rumble_port, RETRO_RUMBLE_STRONG, 0); input_driver_set_rumble_state(cheat->rumble_port, RETRO_RUMBLE_STRONG, 0);
cheat->rumble_primary_end_time = 0; cheat->rumble_primary_end_time = 0;
} }
@ -1153,9 +1100,9 @@ void cheat_manager_apply_rumble(struct item_cheat *cheat, unsigned int curr_valu
input_driver_set_rumble_state(cheat->rumble_port, RETRO_RUMBLE_STRONG, cheat->rumble_primary_strength); input_driver_set_rumble_state(cheat->rumble_port, RETRO_RUMBLE_STRONG, cheat->rumble_primary_strength);
} }
if ( cheat->rumble_secondary_end_time <= cpu_features_get_time_usec() ) if (cheat->rumble_secondary_end_time <= cpu_features_get_time_usec())
{ {
if ( cheat->rumble_secondary_end_time != 0 ) if (cheat->rumble_secondary_end_time != 0)
input_driver_set_rumble_state(cheat->rumble_port, RETRO_RUMBLE_WEAK, 0); input_driver_set_rumble_state(cheat->rumble_port, RETRO_RUMBLE_WEAK, 0);
cheat->rumble_secondary_end_time = 0 ; cheat->rumble_secondary_end_time = 0 ;
} }
@ -1186,14 +1133,15 @@ void cheat_manager_apply_retro_cheats(void)
if (cheat_manager_state.cheats[i].handler != CHEAT_HANDLER_TYPE_RETRO || !cheat_manager_state.cheats[i].state) if (cheat_manager_state.cheats[i].handler != CHEAT_HANDLER_TYPE_RETRO || !cheat_manager_state.cheats[i].state)
continue ; continue ;
if ( !cheat_manager_state.memory_initialized ) if (!cheat_manager_state.memory_initialized)
cheat_manager_initialize_memory(NULL, false) ; cheat_manager_initialize_memory(NULL, false) ;
/* If we're still not initialized, something must have gone wrong - just bail */ /* If we're still not initialized, something
if ( !cheat_manager_state.memory_initialized ) * must have gone wrong - just bail */
if (!cheat_manager_state.memory_initialized)
return; return;
if ( !run_cheat ) if (!run_cheat)
{ {
run_cheat = true ; run_cheat = true ;
continue ; continue ;
@ -1203,7 +1151,7 @@ void cheat_manager_apply_retro_cheats(void)
curr = cheat_manager_state.curr_memory_buf ; curr = cheat_manager_state.curr_memory_buf ;
idx = cheat_manager_state.cheats[i].address ; idx = cheat_manager_state.cheats[i].address ;
switch ( bytes_per_item ) switch (bytes_per_item)
{ {
case 2 : case 2 :
{ {
@ -1229,67 +1177,44 @@ void cheat_manager_apply_retro_cheats(void)
cheat_manager_apply_rumble(&cheat_manager_state.cheats[i], curr_val) ; cheat_manager_apply_rumble(&cheat_manager_state.cheats[i], curr_val) ;
switch ( cheat_manager_state.cheats[i].cheat_type ) switch (cheat_manager_state.cheats[i].cheat_type )
{ {
case CHEAT_TYPE_SET_TO_VALUE : case CHEAT_TYPE_SET_TO_VALUE :
{
set_value = true ; set_value = true ;
value_to_set = cheat_manager_state.cheats[i].value ; value_to_set = cheat_manager_state.cheats[i].value ;
break ; break ;
}
case CHEAT_TYPE_INCREASE_VALUE: case CHEAT_TYPE_INCREASE_VALUE:
{
set_value = true ; set_value = true ;
value_to_set = curr_val + cheat_manager_state.cheats[i].value ; value_to_set = curr_val + cheat_manager_state.cheats[i].value ;
break; break;
}
case CHEAT_TYPE_DECREASE_VALUE: case CHEAT_TYPE_DECREASE_VALUE:
{
set_value = true ; set_value = true ;
value_to_set = curr_val - cheat_manager_state.cheats[i].value ; value_to_set = curr_val - cheat_manager_state.cheats[i].value ;
break; break;
}
case CHEAT_TYPE_RUN_NEXT_IF_EQ: case CHEAT_TYPE_RUN_NEXT_IF_EQ:
{ if (!(curr_val == cheat_manager_state.cheats[i].value))
if (!( curr_val == cheat_manager_state.cheats[i].value ))
{
run_cheat = false ; run_cheat = false ;
}
break; break;
}
case CHEAT_TYPE_RUN_NEXT_IF_NEQ: case CHEAT_TYPE_RUN_NEXT_IF_NEQ:
{ if (!(curr_val != cheat_manager_state.cheats[i].value ))
if (!( curr_val != cheat_manager_state.cheats[i].value ))
{
run_cheat = false ; run_cheat = false ;
}
break; break;
}
case CHEAT_TYPE_RUN_NEXT_IF_LT: case CHEAT_TYPE_RUN_NEXT_IF_LT:
{ if (!(cheat_manager_state.cheats[i].value < curr_val))
if (!( cheat_manager_state.cheats[i].value < curr_val))
{
run_cheat = false ; run_cheat = false ;
}
break; break;
}
case CHEAT_TYPE_RUN_NEXT_IF_GT: case CHEAT_TYPE_RUN_NEXT_IF_GT:
{ if (!(cheat_manager_state.cheats[i].value > curr_val))
if (!( cheat_manager_state.cheats[i].value > curr_val))
{
run_cheat = false ; run_cheat = false ;
}
break; break;
}
} }
if ( set_value ) if (set_value)
{ {
switch ( bytes_per_item ) switch (bytes_per_item)
{ {
case 2 : case 2 :
{ if (cheat_manager_state.cheats[i].big_endian)
if ( cheat_manager_state.cheats[i].big_endian)
{ {
*(curr+idx) = (value_to_set >> 8) & 0xFF ; *(curr+idx) = (value_to_set >> 8) & 0xFF ;
*(curr+idx+1) = value_to_set & 0xFF ; *(curr+idx+1) = value_to_set & 0xFF ;
@ -1301,10 +1226,8 @@ void cheat_manager_apply_retro_cheats(void)
} }
break ; break ;
}
case 4 : case 4 :
{ if (cheat_manager_state.cheats[i].big_endian)
if ( cheat_manager_state.cheats[i].big_endian)
{ {
*(curr+idx) = (value_to_set >> 24) & 0xFF ; *(curr+idx) = (value_to_set >> 24) & 0xFF ;
*(curr+idx+1) = (value_to_set >> 16) & 0xFF ; *(curr+idx+1) = (value_to_set >> 16) & 0xFF ;
@ -1320,10 +1243,8 @@ void cheat_manager_apply_retro_cheats(void)
} }
break ; break ;
}
case 1 : case 1 :
{ if (bits < 8)
if ( bits < 8 )
{ {
unsigned bitpos; unsigned bitpos;
unsigned char val = *(curr+idx); unsigned char val = *(curr+idx);
@ -1344,15 +1265,12 @@ void cheat_manager_apply_retro_cheats(void)
else else
*(curr+idx) = value_to_set & 0xFF; *(curr+idx) = value_to_set & 0xFF;
break ; break ;
}
default : default :
{
*(curr+idx) = value_to_set & 0xFF ; *(curr+idx) = value_to_set & 0xFF ;
break ; break ;
} }
} }
} }
}
} }
void cheat_manager_match_action(enum cheat_match_action_type match_action, unsigned int target_match_idx, unsigned int *address, unsigned int *address_mask, void cheat_manager_match_action(enum cheat_match_action_type match_action, unsigned int target_match_idx, unsigned int *address, unsigned int *address_mask,
unsigned int *prev_value, unsigned int *curr_value) unsigned int *prev_value, unsigned int *curr_value)
@ -1369,100 +1287,89 @@ void cheat_manager_match_action(enum cheat_match_action_type match_action, unsig
unsigned char *prev = cheat_manager_state.prev_memory_buf ; unsigned char *prev = cheat_manager_state.prev_memory_buf ;
unsigned int curr_match_idx = 0; unsigned int curr_match_idx = 0;
if ( target_match_idx > cheat_manager_state.num_matches-1) if (target_match_idx > cheat_manager_state.num_matches-1)
return; return;
if ( curr == NULL ) if (curr == NULL )
return ; return ;
cheat_manager_setup_search_meta(cheat_manager_state.search_bit_size, &bytes_per_item, &mask, &bits); cheat_manager_setup_search_meta(cheat_manager_state.search_bit_size, &bytes_per_item, &mask, &bits);
if ( match_action == CHEAT_MATCH_ACTION_TYPE_BROWSE) if (match_action == CHEAT_MATCH_ACTION_TYPE_BROWSE)
start_idx = *address ; start_idx = *address ;
else else
start_idx = 0 ; start_idx = 0 ;
for (idx = start_idx ; idx < cheat_manager_state.total_memory_size ; idx = idx + bytes_per_item) for (idx = start_idx ; idx < cheat_manager_state.total_memory_size ; idx = idx + bytes_per_item)
{ {
switch ( bytes_per_item ) switch (bytes_per_item )
{ {
case 2 : case 2 :
{
curr_val = cheat_manager_state.big_endian ? curr_val = cheat_manager_state.big_endian ?
(*(curr+idx)*256) + *(curr+idx+1) : (*(curr+idx)*256) + *(curr+idx+1) :
*(curr+idx) + (*(curr+idx+1)*256) ; *(curr+idx) + (*(curr+idx+1)*256) ;
if ( prev != NULL ) if (prev != NULL)
prev_val = cheat_manager_state.big_endian ? prev_val = cheat_manager_state.big_endian ?
(*(prev+idx)*256) + *(prev+idx+1) : (*(prev+idx)*256) + *(prev+idx+1) :
*(prev+idx) + (*(prev+idx+1)*256) ; *(prev+idx) + (*(prev+idx+1)*256) ;
break ; break ;
}
case 4 : case 4 :
{
curr_val = cheat_manager_state.big_endian ? curr_val = cheat_manager_state.big_endian ?
(*(curr+idx)*256*256*256) + (*(curr+idx+1)*256*256) + (*(curr+idx+2)*256) + *(curr+idx+3) : (*(curr+idx)*256*256*256) + (*(curr+idx+1)*256*256) + (*(curr+idx+2)*256) + *(curr+idx+3) :
*(curr+idx) + (*(curr+idx+1)*256) + (*(curr+idx+2)*256*256) + (*(curr+idx+3)*256*256*256) ; *(curr+idx) + (*(curr+idx+1)*256) + (*(curr+idx+2)*256*256) + (*(curr+idx+3)*256*256*256) ;
if ( prev != NULL ) if (prev != NULL)
prev_val = cheat_manager_state.big_endian ? prev_val = cheat_manager_state.big_endian ?
(*(prev+idx)*256*256*256) + (*(prev+idx+1)*256*256) + (*(prev+idx+2)*256) + *(prev+idx+3) : (*(prev+idx)*256*256*256) + (*(prev+idx+1)*256*256) + (*(prev+idx+2)*256) + *(prev+idx+3) :
*(prev+idx) + (*(prev+idx+1)*256) + (*(prev+idx+2)*256*256) + (*(prev+idx+3)*256*256*256) ; *(prev+idx) + (*(prev+idx+1)*256) + (*(prev+idx+2)*256*256) + (*(prev+idx+3)*256*256*256) ;
break ; break ;
}
case 1 : case 1 :
default : default :
{
curr_val = *(curr+idx) ; curr_val = *(curr+idx) ;
if ( prev != NULL ) if (prev != NULL)
prev_val = *(prev+idx) ; prev_val = *(prev+idx) ;
break ; break ;
} }
}
if ( match_action == CHEAT_MATCH_ACTION_TYPE_BROWSE) if (match_action == CHEAT_MATCH_ACTION_TYPE_BROWSE)
{ {
*curr_value = curr_val ; *curr_value = curr_val;
*prev_value = prev_val ; *prev_value = prev_val;
return ; return ;
} }
if ( prev == NULL ) if (!prev)
return ; return;
for (byte_part = 0 ; byte_part < 8/bits ; byte_part++) for (byte_part = 0 ; byte_part < 8/bits ; byte_part++)
{ {
unsigned int prev_match ; unsigned int prev_match ;
if ( bits < 8 ) if (bits < 8 )
{ {
prev_match = *(cheat_manager_state.matches+idx) & (mask << (byte_part*bits)) ; prev_match = *(cheat_manager_state.matches+idx) & (mask << (byte_part*bits)) ;
if ( prev_match ) if (prev_match)
{ {
if ( target_match_idx == curr_match_idx ) if (target_match_idx == curr_match_idx)
{ {
switch ( match_action ) switch (match_action)
{ {
case CHEAT_MATCH_ACTION_TYPE_BROWSE : case CHEAT_MATCH_ACTION_TYPE_BROWSE :
return ; return ;
case CHEAT_MATCH_ACTION_TYPE_VIEW : case CHEAT_MATCH_ACTION_TYPE_VIEW :
{
*address = idx ; *address = idx ;
*address_mask = (mask << (byte_part*bits)) ; *address_mask = (mask << (byte_part*bits)) ;
*curr_value = curr_val ; *curr_value = curr_val ;
*prev_value = prev_val ; *prev_value = prev_val ;
return ; return;
}
case CHEAT_MATCH_ACTION_TYPE_COPY : case CHEAT_MATCH_ACTION_TYPE_COPY :
{ if (!cheat_manager_add_new_code(cheat_manager_state.search_bit_size, idx, (mask << (byte_part*bits)),
if ( !cheat_manager_add_new_code(cheat_manager_state.search_bit_size, idx, (mask << (byte_part*bits)),
cheat_manager_state.big_endian, curr_val) ) cheat_manager_state.big_endian, curr_val) )
runloop_msg_queue_push(msg_hash_to_str(MSG_CHEAT_SEARCH_ADD_MATCH_FAIL), 1, 180, true); runloop_msg_queue_push(msg_hash_to_str(MSG_CHEAT_SEARCH_ADD_MATCH_FAIL), 1, 180, true);
else else
runloop_msg_queue_push(msg_hash_to_str(MSG_CHEAT_SEARCH_ADD_MATCH_SUCCESS), 1, 180, true); runloop_msg_queue_push(msg_hash_to_str(MSG_CHEAT_SEARCH_ADD_MATCH_SUCCESS), 1, 180, true);
return ; return ;
}
case CHEAT_MATCH_ACTION_TYPE_DELETE : case CHEAT_MATCH_ACTION_TYPE_DELETE :
{ if (bits < 8)
if ( bits < 8 )
*(cheat_manager_state.matches+idx) = *(cheat_manager_state.matches+idx) & *(cheat_manager_state.matches+idx) = *(cheat_manager_state.matches+idx) &
(( ~(mask << (byte_part*bits))) & 0xFF ); (( ~(mask << (byte_part*bits))) & 0xFF );
else else
@ -1470,10 +1377,9 @@ void cheat_manager_match_action(enum cheat_match_action_type match_action, unsig
if ( cheat_manager_state.num_matches > 0 ) if ( cheat_manager_state.num_matches > 0 )
cheat_manager_state.num_matches-- ; cheat_manager_state.num_matches-- ;
runloop_msg_queue_push(msg_hash_to_str(MSG_CHEAT_SEARCH_DELETE_MATCH_SUCCESS), 1, 180, true); runloop_msg_queue_push(msg_hash_to_str(MSG_CHEAT_SEARCH_DELETE_MATCH_SUCCESS), 1, 180, true);
return ; return;
} }
} return;
return ;
} }
curr_match_idx++ ; curr_match_idx++ ;
} }
@ -1481,33 +1387,28 @@ void cheat_manager_match_action(enum cheat_match_action_type match_action, unsig
else else
{ {
prev_match = *(cheat_manager_state.matches+idx) ; prev_match = *(cheat_manager_state.matches+idx) ;
if ( prev_match ) if (prev_match)
{ {
if ( target_match_idx == curr_match_idx ) if (target_match_idx == curr_match_idx)
{ {
switch ( match_action ) switch (match_action)
{ {
case CHEAT_MATCH_ACTION_TYPE_BROWSE : case CHEAT_MATCH_ACTION_TYPE_BROWSE :
return ; return ;
case CHEAT_MATCH_ACTION_TYPE_VIEW : case CHEAT_MATCH_ACTION_TYPE_VIEW :
{
*address = idx ; *address = idx ;
*address_mask = 0xFF ; *address_mask = 0xFF ;
*curr_value = curr_val ; *curr_value = curr_val ;
*prev_value = prev_val ; *prev_value = prev_val ;
return ; return ;
}
case CHEAT_MATCH_ACTION_TYPE_COPY : case CHEAT_MATCH_ACTION_TYPE_COPY :
{
if ( !cheat_manager_add_new_code(cheat_manager_state.search_bit_size, idx, 0xFF, if ( !cheat_manager_add_new_code(cheat_manager_state.search_bit_size, idx, 0xFF,
cheat_manager_state.big_endian, curr_val) ) cheat_manager_state.big_endian, curr_val) )
runloop_msg_queue_push(msg_hash_to_str(MSG_CHEAT_SEARCH_ADD_MATCH_FAIL), 1, 180, true); runloop_msg_queue_push(msg_hash_to_str(MSG_CHEAT_SEARCH_ADD_MATCH_FAIL), 1, 180, true);
else else
runloop_msg_queue_push(msg_hash_to_str(MSG_CHEAT_SEARCH_ADD_MATCH_SUCCESS), 1, 180, true); runloop_msg_queue_push(msg_hash_to_str(MSG_CHEAT_SEARCH_ADD_MATCH_SUCCESS), 1, 180, true);
return ; return ;
}
case CHEAT_MATCH_ACTION_TYPE_DELETE : case CHEAT_MATCH_ACTION_TYPE_DELETE :
{
if ( bits < 8 ) if ( bits < 8 )
*(cheat_manager_state.matches+idx) = *(cheat_manager_state.matches+idx) & *(cheat_manager_state.matches+idx) = *(cheat_manager_state.matches+idx) &
(( ~(mask << (byte_part*bits))) & 0xFF ); (( ~(mask << (byte_part*bits))) & 0xFF );
@ -1519,7 +1420,6 @@ void cheat_manager_match_action(enum cheat_match_action_type match_action, unsig
return ; return ;
} }
} }
}
curr_match_idx++ ; curr_match_idx++ ;
} }
} }

View File

@ -88,7 +88,7 @@ enum
ACTION_OK_SET_PATH_VIDEO_FILTER, ACTION_OK_SET_PATH_VIDEO_FILTER,
ACTION_OK_SET_PATH_OVERLAY, ACTION_OK_SET_PATH_OVERLAY,
ACTION_OK_SET_DIRECTORY, ACTION_OK_SET_DIRECTORY,
ACTION_OK_LOAD_CHEAT_FILE_APPEND, ACTION_OK_LOAD_CHEAT_FILE_APPEND
}; };
enum enum
@ -1409,7 +1409,9 @@ static int generic_action_ok(const char *path,
break; break;
case ACTION_OK_LOAD_CHEAT_FILE_APPEND: case ACTION_OK_LOAD_CHEAT_FILE_APPEND:
flush_char = msg_hash_to_str(flush_id); flush_char = msg_hash_to_str(flush_id);
//cheat_manager_free(); #if 0
cheat_manager_free();
#endif
if (!cheat_manager_load(action_path,true)) if (!cheat_manager_load(action_path,true))
goto error; goto error;

View File

@ -5245,7 +5245,7 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data)
PARSE_ONLY_UINT, false); PARSE_ONLY_UINT, false);
} }
//<Inspect Memory At this Address> /* Inspect Memory At this Address */
menu_entries_append_enum(info->list, menu_entries_append_enum(info->list,
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_CHEAT_ADD_NEW_AFTER), msg_hash_to_str(MENU_ENUM_LABEL_VALUE_CHEAT_ADD_NEW_AFTER),
@ -5370,13 +5370,13 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data)
setting = menu_setting_find(msg_hash_to_str(MENU_ENUM_LABEL_CHEAT_DELETE_MATCH)); setting = menu_setting_find(msg_hash_to_str(MENU_ENUM_LABEL_CHEAT_DELETE_MATCH));
if ( setting ) if (setting)
setting->max = cheat_manager_state.num_matches-1; setting->max = cheat_manager_state.num_matches-1;
setting = menu_setting_find(msg_hash_to_str(MENU_ENUM_LABEL_CHEAT_COPY_MATCH)); setting = menu_setting_find(msg_hash_to_str(MENU_ENUM_LABEL_CHEAT_COPY_MATCH));
if ( setting ) if (setting)
setting->max = cheat_manager_state.num_matches-1; setting->max = cheat_manager_state.num_matches-1;
setting = menu_setting_find(msg_hash_to_str(MENU_ENUM_LABEL_CHEAT_BROWSE_MEMORY)); setting = menu_setting_find(msg_hash_to_str(MENU_ENUM_LABEL_CHEAT_BROWSE_MEMORY));
if ( setting ) if (setting)
setting->max = cheat_manager_state.actual_memory_size>0?cheat_manager_state.actual_memory_size-1:0 ; setting->max = cheat_manager_state.actual_memory_size>0?cheat_manager_state.actual_memory_size-1:0 ;
info->need_refresh = true; info->need_refresh = true;
@ -7034,7 +7034,7 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data)
if (system) if (system)
{ {
if ( !string_is_empty(system->info.library_name) && if (!string_is_empty(system->info.library_name) &&
!string_is_equal(system->info.library_name, !string_is_equal(system->info.library_name,
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_NO_CORE))) msg_hash_to_str(MENU_ENUM_LABEL_VALUE_NO_CORE)))
menu_displaylist_parse_settings_enum(menu, info, menu_displaylist_parse_settings_enum(menu, info,