From e9497abc6173a8b17b08885575e16d8437b6e192 Mon Sep 17 00:00:00 2001 From: meancoot Date: Sun, 10 Mar 2013 00:05:19 -0500 Subject: [PATCH] (iOS) Add (hacky) aspect ratio setting. --- ios/RetroArch/RAConfig.h | 1 + ios/RetroArch/RAConfig.m | 47 +++++++++------------- ios/RetroArch/settings/RASettingsList.m | 23 +++++++++++ ios/RetroArch/settings/RASettingsSubList.m | 12 ++++++ ios/RetroArch/settings/settings.h | 3 +- 5 files changed, 57 insertions(+), 29 deletions(-) diff --git a/ios/RetroArch/RAConfig.h b/ios/RetroArch/RAConfig.h index b19742ffcf..91f301d959 100644 --- a/ios/RetroArch/RAConfig.h +++ b/ios/RetroArch/RAConfig.h @@ -20,6 +20,7 @@ - (bool)getBoolNamed:(NSString*)name withDefault:(bool)def; - (int)getIntNamed:(NSString*)name withDefault:(int)def; - (unsigned)getUintNamed:(NSString*)name withDefault:(unsigned)def; +- (double)getDoubleNamed:(NSString*)name withDefault:(double)def; - (NSString*)getStringNamed:(NSString*)name withDefault:(NSString*)def; - (void)putIntNamed:(NSString*)name value:(int)value; diff --git a/ios/RetroArch/RAConfig.m b/ios/RetroArch/RAConfig.m index 76947fb901..b0b0bc62db 100644 --- a/ios/RetroArch/RAConfig.m +++ b/ios/RetroArch/RAConfig.m @@ -30,43 +30,39 @@ - (void)dealloc { - if (_config) - config_file_free(_config); + config_file_free(_config); } - (void)writeToFile:(NSString*)path { - if (_config) - config_file_write(_config, [path UTF8String]); + config_file_write(_config, [path UTF8String]); } - (bool)getBoolNamed:(NSString*)name withDefault:(bool)def { bool result = def; - - if (_config) - config_get_bool(_config, [name UTF8String], &result); - + config_get_bool(_config, [name UTF8String], &result); return result; } - (int)getIntNamed:(NSString*)name withDefault:(int)def { int result = def; - - if (_config) - config_get_int(_config, [name UTF8String], &result); - + config_get_int(_config, [name UTF8String], &result); return result; } - (unsigned)getUintNamed:(NSString*)name withDefault:(unsigned)def { unsigned result = def; - - if (_config) - config_get_uint(_config, [name UTF8String], &result); - + config_get_uint(_config, [name UTF8String], &result); + return result; +} + +- (double)getDoubleNamed:(NSString*)name withDefault:(double)def +{ + double result = def; + config_get_double(_config, [name UTF8String], &result); return result; } @@ -74,27 +70,22 @@ { NSString* result = def; - if (_config) - { - char* data = 0; - if (config_get_string(_config, [name UTF8String], &data)) - result = [NSString stringWithUTF8String:data]; - free(data); - } - + char* data = 0; + if (config_get_string(_config, [name UTF8String], &data)) + result = [NSString stringWithUTF8String:data]; + free(data); + return result; } - (void)putIntNamed:(NSString*)name value:(int)value { - if (_config) - config_set_int(_config, [name UTF8String], value); + config_set_int(_config, [name UTF8String], value); } - (void)putStringNamed:(NSString*)name value:(NSString*)value { - if (_config) - config_set_string(_config, [name UTF8String], [value UTF8String]); + config_set_string(_config, [name UTF8String], [value UTF8String]); } @end diff --git a/ios/RetroArch/settings/RASettingsList.m b/ios/RetroArch/settings/RASettingsList.m index 5eda933dda..81ff39a2c7 100644 --- a/ios/RetroArch/settings/RASettingsList.m +++ b/ios/RetroArch/settings/RASettingsList.m @@ -78,6 +78,27 @@ static RASettingData* subpath_setting(RAConfig* config, NSString* name, NSString return result; } +static RASettingData* aspect_setting(RAConfig* config, NSString* label) +{ + // Why does this need to be so difficult? + + RASettingData* result = [[RASettingData alloc] initWithType:AspectSetting label:label name:@"fram"]; + result.subValues = [NSArray arrayWithObjects:@"Fill Screen", @"Game Aspect", @"Pixel Aspect", @"4:3", @"16:9", nil]; + + bool videoForceAspect = [config getBoolNamed:@"video_force_aspect" withDefault:true]; + bool videoAspectAuto = [config getBoolNamed:@"video_aspect_ratio_auto" withDefault:false]; + double videoAspect = [config getDoubleNamed:@"video_aspect_ratio" withDefault:0.0]; + + if (!videoForceAspect) + result.value = @"Fill Screen"; + else if (videoAspect < 0.0) + result.value = videoAspectAuto ? @"Game Aspect" : @"Pixel Aspect"; + else + result.value = (videoAspect < 1.5) ? @"4:3" : @"16:9"; + + return result; +} + static RASettingData* custom_action(NSString* action) { return [[RASettingData alloc] initWithType:CustomAction label:action name:nil]; @@ -103,6 +124,8 @@ static RASettingData* custom_action(NSString* action) boolean_setting(config, @"video_smooth", @"Smooth Video", @"true"), boolean_setting(config, @"video_crop_overscan", @"Crop Overscan", @"true"), subpath_setting(config, @"video_bsnes_shader", @"Shader", @"", shader_path, @"shader"), + aspect_setting(config, @"Aspect Ratio"), + boolean_setting(config, @"video_scale_integer", @"Integer Scaling", @"false"), nil], [NSArray arrayWithObjects:@"Audio", diff --git a/ios/RetroArch/settings/RASettingsSubList.m b/ios/RetroArch/settings/RASettingsSubList.m index 5dfe672b64..12f642398c 100644 --- a/ios/RetroArch/settings/RASettingsSubList.m +++ b/ios/RetroArch/settings/RASettingsSubList.m @@ -69,6 +69,16 @@ static const char* const SETTINGID = "SETTING"; [config putStringNamed:[setting.name stringByAppendingString:@"_btn"] value:setting.msubValues[1]]; break; + case AspectSetting: + [config putStringNamed:@"video_force_aspect" value:[@"Fill Screen" isEqualToString:setting.value] ? @"false" : @"true"]; + [config putStringNamed:@"video_aspect_ratio_auto" value:[@"Game Aspect" isEqualToString:setting.value] ? @"true" : @"false"]; + [config putStringNamed:@"video_aspect_ratio" value:@"-1.0"]; + if([@"4:3" isEqualToString:setting.value]) + [config putStringNamed:@"video_aspect_ratio" value:@"1.33333333"]; + else if([@"16:9" isEqualToString:setting.value]) + [config putStringNamed:@"video_aspect_ratio" value:@"1.777777777"]; + break; + case CustomAction: break; @@ -88,6 +98,7 @@ static const char* const SETTINGID = "SETTING"; { case EnumerationSetting: case FileListSetting: + case AspectSetting: [[RetroArch_iOS get] pushViewController:[[RASettingEnumerationList alloc] initWithSetting:setting fromTable:(UITableView*)self.view] animated:YES]; break; @@ -147,6 +158,7 @@ static const char* const SETTINGID = "SETTING"; case FileListSetting: case ButtonSetting: case CustomAction: + case AspectSetting: { cell = [self.tableView dequeueReusableCellWithIdentifier:@"enumeration"]; cell = cell ? cell : [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:@"enumeration"]; diff --git a/ios/RetroArch/settings/settings.h b/ios/RetroArch/settings/settings.h index 2b7dd8634f..b95f70a3f4 100644 --- a/ios/RetroArch/settings/settings.h +++ b/ios/RetroArch/settings/settings.h @@ -15,7 +15,8 @@ enum SettingTypes { - BooleanSetting, ButtonSetting, EnumerationSetting, FileListSetting, GroupSetting, CustomAction + BooleanSetting, ButtonSetting, EnumerationSetting, FileListSetting, + GroupSetting, AspectSetting, CustomAction }; @interface RASettingData : NSObject