@@ -1098,9 +1098,54 @@ void rg_gui_options_menu(void)
1098
1098
rg_audio_set_mute (false);
1099
1099
}
1100
1100
1101
+ void rg_gui_sysinfo_menu (void )
1102
+ {
1103
+ char screen_str [32 ], network_str [64 ], memory_str [32 ];
1104
+ char storage_str [32 ], localtime_str [32 ], uptime [32 ];
1105
+
1106
+ const rg_gui_option_t options [] = {
1107
+ {0 , "Console" , RG_TARGET_NAME , 1 , NULL },
1108
+ {0 , "Screen" , screen_str , 1 , NULL },
1109
+ {0 , "Memory" , memory_str , 1 , NULL },
1110
+ {0 , "Network" , network_str , 1 , NULL },
1111
+ // {0, "Storage", storage_str, 1, NULL},
1112
+ {0 , "RTC" , localtime_str , 1 , NULL },
1113
+ {0 , "Uptime" , uptime , 1 , NULL },
1114
+ RG_DIALOG_SEPARATOR ,
1115
+ {0 , "Close" , NULL , 1 , NULL },
1116
+ RG_DIALOG_CHOICE_LAST
1117
+ };
1118
+
1119
+ const rg_display_t * display = rg_display_get_info ();
1120
+ rg_stats_t stats = rg_system_get_counters ();
1121
+ time_t now = time (NULL );
1122
+
1123
+ snprintf (screen_str , 32 , "%dx%d (%d)" , display -> screen .width , display -> screen .height , display -> screen .format );
1124
+ snprintf (memory_str , 32 , "%dKB + %dKB" , stats .totalMemoryInt / 1024 , stats .totalMemoryExt / 1024 );
1125
+ snprintf (uptime , 32 , "%ds" , (int )(rg_system_timer () / 1000000 ));
1126
+ snprintf (storage_str , 32 , "%s" , "N/A" );
1127
+ strftime (localtime_str , 32 , "%F %T" , localtime (& now ));
1128
+
1129
+ #ifdef RG_ENABLE_NETWORKING
1130
+ rg_network_t net = rg_network_get_info ();
1131
+ if (net .state == RG_NETWORK_CONNECTED )
1132
+ snprintf (network_str , 64 , "%s\n%s" , net .name , net .ip_addr );
1133
+ else if (net .state == RG_NETWORK_CONNECTING )
1134
+ snprintf (network_str , 64 , "%s\n%s" , net .name , "connecting..." );
1135
+ else if (net .name [0 ])
1136
+ snprintf (network_str , 64 , "%s\n%s" , net .name , "disconnected" );
1137
+ else
1138
+ snprintf (network_str , 64 , "%s" , "disconnected" );
1139
+ #else
1140
+ strcpy (network_str , "No adapter" );
1141
+ #endif
1142
+
1143
+ rg_gui_dialog ("System Information" , options , -1 );
1144
+ }
1145
+
1101
1146
void rg_gui_about_menu (const rg_gui_option_t * extra_options )
1102
1147
{
1103
- char build_ver [32 ], build_date [32 ], build_user [32 ], network_str [ 64 ] ;
1148
+ char build_ver [32 ], build_date [32 ], build_user [32 ];
1104
1149
1105
1150
size_t extra_options_count = get_dialog_items_count (extra_options );
1106
1151
@@ -1110,17 +1155,12 @@ void rg_gui_about_menu(const rg_gui_option_t *extra_options)
1110
1155
* opt ++ = (rg_gui_option_t ){0 , "Version" , build_ver , 1 , NULL };
1111
1156
* opt ++ = (rg_gui_option_t ){0 , "Date" , build_date , 1 , NULL };
1112
1157
* opt ++ = (rg_gui_option_t ){0 , "By" , build_user , 1 , NULL };
1113
- #ifdef RG_ENABLE_NETWORKING
1114
- * opt ++ = (rg_gui_option_t ){0 , "Network" , network_str , 1 , NULL };
1115
- #endif
1116
1158
* opt ++ = (rg_gui_option_t )RG_DIALOG_SEPARATOR ;
1159
+ * opt ++ = (rg_gui_option_t ){1000 , "System information" , NULL , 1 , NULL };
1117
1160
for (size_t i = 0 ; i < extra_options_count ; i ++ )
1118
1161
* opt ++ = extra_options [i ];
1119
- * opt ++ = (rg_gui_option_t ){1000 , "Reboot to firmware" , NULL , 1 , NULL };
1120
1162
* opt ++ = (rg_gui_option_t ){2000 , "Reset settings" , NULL , 1 , NULL };
1121
- * opt ++ = (rg_gui_option_t ){3000 , "Clear cache" , NULL , 1 , NULL };
1122
- * opt ++ = (rg_gui_option_t ){4000 , "Debug" , NULL , 1 , NULL };
1123
- * opt ++ = (rg_gui_option_t ){0000 , "Close" , NULL , 1 , NULL };
1163
+ * opt ++ = (rg_gui_option_t ){3000 , "Debug" , NULL , 1 , NULL };
1124
1164
* opt ++ = (rg_gui_option_t )RG_DIALOG_CHOICE_LAST ;
1125
1165
1126
1166
const rg_app_t * app = rg_system_get_app ();
@@ -1139,39 +1179,28 @@ void rg_gui_about_menu(const rg_gui_option_t *extra_options)
1139
1179
strcat (build_ver , ")" );
1140
1180
}
1141
1181
1142
- rg_network_t net = rg_network_get_info ();
1143
- if (net .state == RG_NETWORK_CONNECTED )
1144
- snprintf (network_str , 64 , "%s\n%s" , net .name , net .ip_addr );
1145
- else if (net .state == RG_NETWORK_CONNECTING )
1146
- snprintf (network_str , 64 , "%s\n%s" , net .name , "connecting..." );
1147
- else if (net .name [0 ])
1148
- snprintf (network_str , 64 , "%s\n%s" , net .name , "disconnected" );
1149
- else
1150
- snprintf (network_str , 64 , "%s" , "disconnected" );
1151
-
1152
- int sel = rg_gui_dialog ("Retro-Go" , options , -1 );
1153
-
1154
- rg_settings_commit ();
1155
- rg_system_save_time ();
1156
-
1157
- switch (sel )
1182
+ while (true)
1158
1183
{
1159
- case 1000 :
1160
- rg_system_switch_app (RG_APP_FACTORY , RG_APP_FACTORY , 0 , 0 );
1161
- break ;
1162
- case 2000 :
1163
- if (rg_gui_confirm ("Reset all settings?" , NULL , false)) {
1164
- rg_settings_reset ();
1165
- rg_system_restart ();
1166
- }
1167
- break ;
1168
- case 3000 :
1169
- rg_storage_delete (RG_BASE_PATH_CACHE );
1170
- rg_system_restart ();
1171
- break ;
1172
- case 4000 :
1173
- rg_gui_debug_menu (NULL );
1174
- break ;
1184
+ switch (rg_gui_dialog ("Retro-Go" , options , 4 ))
1185
+ {
1186
+ case 1000 :
1187
+ rg_gui_sysinfo_menu ();
1188
+ break ;
1189
+ case 2000 :
1190
+ if (rg_gui_confirm ("Reset all settings?" , NULL , false)) {
1191
+ rg_storage_delete (RG_BASE_PATH_CACHE );
1192
+ rg_settings_reset ();
1193
+ rg_system_restart ();
1194
+ return ;
1195
+ }
1196
+ break ;
1197
+ case 3000 :
1198
+ rg_gui_debug_menu (NULL );
1199
+ break ;
1200
+ default :
1201
+ return ;
1202
+ }
1203
+ rg_system_event (RG_EVENT_REDRAW , NULL );
1175
1204
}
1176
1205
}
1177
1206
@@ -1192,10 +1221,12 @@ void rg_gui_debug_menu(const rg_gui_option_t *extra_options)
1192
1221
{0 , "Timezone " , timezone , 1 , NULL },
1193
1222
{0 , "Uptime " , uptime , 1 , NULL },
1194
1223
RG_DIALOG_SEPARATOR ,
1195
- {1000 , "Save screenshot" , NULL , 1 , NULL },
1196
- {2000 , "Save trace" , NULL , 1 , NULL },
1197
- {3000 , "Cheats" , NULL , 1 , NULL },
1198
- {4000 , "Crash" , NULL , 1 , NULL },
1224
+ {1 , "Reboot to firmware" , NULL , 1 , NULL },
1225
+ {2 , "Clear cache" , NULL , 1 , NULL },
1226
+ {3 , "Save screenshot" , NULL , 1 , NULL },
1227
+ {4 , "Save trace" , NULL , 1 , NULL },
1228
+ {5 , "Cheats" , NULL , 1 , NULL },
1229
+ {6 , "Crash" , NULL , 1 , NULL },
1199
1230
RG_DIALOG_CHOICE_LAST
1200
1231
};
1201
1232
@@ -1215,13 +1246,22 @@ void rg_gui_debug_menu(const rg_gui_option_t *extra_options)
1215
1246
1216
1247
switch (rg_gui_dialog ("Debugging" , options , 0 ))
1217
1248
{
1218
- case 1000 :
1249
+ case 1 :
1250
+ rg_system_switch_app (RG_APP_FACTORY , RG_APP_FACTORY , 0 , 0 );
1251
+ break ;
1252
+ case 2 :
1253
+ rg_storage_delete (RG_BASE_PATH_CACHE );
1254
+ rg_system_restart ();
1255
+ break ;
1256
+ case 3 :
1219
1257
rg_emu_screenshot (RG_STORAGE_ROOT "/screenshot.png" , 0 , 0 );
1220
1258
break ;
1221
- case 2000 :
1259
+ case 4 :
1222
1260
rg_system_save_trace (RG_STORAGE_ROOT "/trace.txt" , 0 );
1223
1261
break ;
1224
- case 4000 :
1262
+ case 5 :
1263
+ break ;
1264
+ case 6 :
1225
1265
RG_PANIC ("Crash test!" );
1226
1266
break ;
1227
1267
}
0 commit comments