#include "../../general.h"
#include "../../input.h"
#include "../../palette.h"
+#include "../../fce.h"
#include "revision.h"
#define array_size(x) (sizeof(x) / sizeof(x[0]))
MA_OPT_GG,
MA_OPT_SHOWFPS,
MA_OPT_FSKIP,
+ MA_OPT_SWFILTER,
+ MA_OPT_HWFILTER,
+ MA_OPT_SCALING,
MA_OPT_RENDERER,
MA_OPT_SOUNDON,
MA_OPT_SOUNDRATE,
// -------------- options --------------
static const char *men_frameskip[] = { "Auto", "0", "1", "2", "3", "4", NULL };
+static const char *men_swfilter[] = { "none", "Scale2x", "Eagle2x", NULL };
+static const char *men_scaling[] = { "1x", "proportional", "4:3 scaled", "fullscreen", NULL };
static const char *men_rates[] = { "8000", "11025", "16000", "22050", "44100", NULL };
static const int men_rates_i[] = { 8000 , 11025 , 16000 , 22050 , 44100 };
static const char *men_region[] = { "Auto", "NTSC", "PAL", NULL };
static void config_commit(void)
{
Settings.sound_rate = men_rates_i[sndrate_i];
- soundvol = sndon ? 0 : 50;
+ soundvol = sndon ? 50 : 0;
Settings.turbo_rate_add = (turbo_i * 2 << 24) / 60 + 1;
Settings.frameskip = frameskip_i - 1;
static menu_entry e_menu_options[] =
{
- mee_onoff ("Show FPS", MA_OPT_SHOWFPS, Settings.showfps, 1),
+// mee_onoff ("Show FPS", MA_OPT_SHOWFPS, Settings.showfps, 1),
mee_enum ("Frameskip", MA_OPT_FSKIP, frameskip_i, men_frameskip),
+ mee_enum ("Softwere filter", MA_OPT_SWFILTER, Settings.sw_filter, men_swfilter),
+ mee_enum ("Hardware filter", MA_OPT_HWFILTER, Settings.hw_filter, NULL),
+ mee_enum ("Scaling", MA_OPT_SCALING, Settings.scaling, men_scaling),
mee_onoff_h ("Accurate renderer (slow)",MA_OPT_RENDERER, Settings.accurate_mode, 1, h_renderer),
mee_onoff ("Enable sound", MA_OPT_SOUNDON, sndon, 1),
mee_enum ("Sound Rate", MA_OPT_SOUNDRATE, sndrate_i, men_rates),
mee_range ("Turbo rate (Hz)", MA_OPT_TURBO, turbo_i, 1, 30),
mee_enum ("Confirm savestate", MA_OPT_SSTATE, Settings.sstate_confirm, men_sstate),
mee_range ("Save slot", MA_OPT_SSLOT, CurrentState, 0, 9),
- mee_range ("Gamma correction", MA_OPT_GAMMA, Settings.gamma, 0, 300),
+// mee_range ("Gamma correction", MA_OPT_GAMMA, Settings.gamma, 0, 300),
mee_handler ("[FCE Ultra options]", menu_loop_fceu_options),
mee_cust_nosave("Save global config", MA_OPT_SAVECFG, mh_savecfg, mgn_saveloadcfg),
mee_cust_nosave("Save cfg for loaded game",MA_OPT_SAVECFG_GAME, mh_savecfg, mgn_saveloadcfg),
int oldrate;
int i;
+ i = me_id2offset(e_menu_options, MA_OPT_HWFILTER);
+ e_menu_options[i].data = plat_target.filters;
+ me_enable(e_menu_options, MA_OPT_HWFILTER, plat_target.filters != NULL);
+
oldrate = Settings.sound_rate;
for (i = 0; i < array_size(men_rates_i); i++) {
if (Settings.sound_rate == men_rates_i[i]) {
// -------------- root menu --------------
+static void draw_frame_main(void)
+{
+ struct tm *tmp;
+ time_t ltime;
+ int capacity = -1;
+ char ltime_s[16];
+ char buff[128];
+ char *out;
+
+ if (!fceugi || !GameInterface)
+ return;
+
+ buff[0] = 0;
+ GameInterface(GI_INFOSTRING, buff);
+
+ smalltext_out16(4, 1, buff, 0xf7de);
+
+ if (plat_target.get_bat_capacity)
+ capacity = plat_target.get_bat_capacity();
+ ltime = time(NULL);
+ tmp = localtime(<ime);
+ strftime(ltime_s, sizeof(ltime_s), "%H:%M", tmp);
+ if (capacity >= 0) {
+ snprintf(buff, sizeof(buff), "%s %3d%%", ltime_s, capacity);
+ out = buff;
+ }
+ else
+ out = ltime_s;
+ smalltext_out16(4, 1 + me_sfont_h, out, 0xf7de);
+}
+
static const char credits_text[] =
"GPFCE " REV "\n"
"(c) notaz, 2007,2012\n\n"
- "Based on FCE Ultra versions\n"
- "0.81 and 0.98.1x\n\n"
+ "Based on various FCE Ultra\n"
+ " / FCEUX versions\n\n"
" - Credits -\n"
"Bero: FCE\n"
"Xodnizel: FCE Ultra\n"
- "FCA author: 6502 core\n";
+ "FCEUX team: FCEUX\n"
+ "CaH4e3: mappers\n"
+ "FCA author: 6502 core\n"
+ "M-HT: NEON scalers\n";
static void draw_frame_credits(void)
{
me_enable(e_menu_main, MA_MAIN_CHEATS, fceugi && cheats);
plat_video_menu_enter(fceugi != NULL);
+ memcpy(g_menubg_ptr, g_menubg_src_ptr, g_menuscreen_w * g_menuscreen_h * 2);
in_set_config_int(0, IN_CFG_BLOCKING, 1);
do {
- me_loop_d(e_menu_main, &sel, NULL, NULL);
- } while (!fceugi);
+ me_loop_d(e_menu_main, &sel, NULL, draw_frame_main);
+ } while (!fceugi && menu_loop_ret == 0);
/* wait until menu, ok, back is released */
while (in_menu_wait_any(NULL, 50) & (PBTN_MENU|PBTN_MOK|PBTN_MBACK))