list of extensions

From Wiki

Jump to: navigation, search
Line 775: Line 775:
  
 
====*do_not_compromise_fullscreen_mode====
 
====*do_not_compromise_fullscreen_mode====
 +
 +
====*do_refresh_during_vertical_blank====
  
 
====*do_scale_640x480_modes_to_setting====
 
====*do_scale_640x480_modes_to_setting====
Line 781: Line 783:
  
 
====*restrict_aspect_ratio_to====
 
====*restrict_aspect_ratio_to====
 +
 +
====*restrict_frame_rate_to====
  
 
====*shader_compatability_level====
 
====*shader_compatability_level====

Revision as of 18:27, 18 June 2011

This page is a list of Sword of Moonlight Extension Library extensions by section. Each extension is a named key and value pair belonging in a section following INI format rules.

Extensions

There are some basic style decisions in terms of the extension syntax. The most dominant is extensions which begin with do_ are yes/no (either on or off) extensions. Extensions beginning with do_not_ indicate that the extension normally goes into effect unless disabled. Most such extensions are dependent upon other extensions which must be first enabled. The #Option section includes only do_ extensions which act as a master switch for many extensions (the extensions in the #Detail section are all explicitly tied to the Option section).

Other distinctions exist but should just be picked up upon through personal experience. This page is not a guideline for filling out a so-called Ex.ini file. Nor is it official documentation. Many extensions may be officially undocumented early in their life or perhaps forever, probably with good reason. These extensions can be documented here or elsewhere, but their officially undocumented status should be conveyed to the reader.

Sections

Anything not recognized as an extension is ignored. Normally this is a non-fatal error, however there is an "unnamed" section which exists implicitly before the first section. The only extension recognized inside is C. It may be set to an ISO-639 language code and ISO-3166 country code pair in order to change the locale of the file itself. The default locale is C, named after the C programming language. It is language neutral more or less.

Note: The file itself is Unicode (UTF16) or ANSI. Changing the locale is something a translator might do if they wanted their audience to be 100% comfortable editing the file in a particular language.

The extension library C locale reserves the right to 6 letter ASCII section names with or without numbers immediately appended. Modules may use any other combination of characters.

Contents

The following is a list of terms used throughout the list proper.

  • An asterisk (*) indicates an extension is undocumented (within this page)
  • A "binary statement" means a representation of 1 or 0. It may be the Arabic numerals 1 or 0, yes or no, on or off, and some additional semantical operations not elaborated upon here.
  • A "real number" is Arabic digits with an optional decimal point. So named because they are the foil to "imaginary" numbers, even though there is nothing particularly real about a partial number. C style scientific notation will also probably work, but is not recommended.
  • A "whole number" is Arabic digits no more no less. It can't represent a half of something for example.
  • A positive real or whole number excludes negative numbers (elusive evil twin anti-numbers).
  • A "string of text" means anything in your wildest imagination you can type into a text editor.
  • As for "hexadecimal", see Hexadecimal. Numerals a~f must be lowercase.
  • A colour is a hexadecimal value which can include between 1 and 8 digits. Depending upon how many digits are provided the colour will be interpreted differently. Examples follow.
1 digit colour is one of 16 predefined brushes. The brushes are the same as a Microsoft Window's cmd.exe console.
2 digit colour is 4bit opacity + brush. Opacity ranges from 0 (fully transparent) to f (fully opaque).
3 digit colour is a 4bit RGB colour. Each colour plane ranges from 0 (black) to f (saturated).
4 digit colour is 4bit opacity + 4bit RGB colour.
5 digit colour is not allowed.
6 digit colour is an 8bit RGB colour. Each colour plane ranges from 00 (black) to ff (saturated).
7 digit colour is not allowed.
8 digit colour is 8bit opacity + 8bit RGB colour. Opacity ranges from 00 (fully transparent) to ff (fully opaque).



Adjust

bob_distance_multiplier

Introduced around 1.0.0.1, this extension multiplies the walking effect experienced by the player. Values are limited to real numbers.

draw_distance_multiplier

Introduced around 1.0.0.1, this extension multiplies the draw distance uniformly across maps. Values are limited to positive real numbers.

fog_pullback_factor

Introduced around 1.0.0.1, this extension pulls the fog to the player as the value approaches 1. It is then averaged with #fog_pushback_factor to determine where fog will begin. Values are limited to real numbers.

fog_pushback_factor

Introduced around 1.0.0.1, this extension pushes the fog away from the player arriving at the draw distance when the value reaches 1. It is then averaged with #fog_pullback_factor to determine where fog will begin. Values are limited to positive real numbers.

fog_saturate_multiplier

Introduced around 1.0.0.1, this extension multiplies the distance at which fog becomes fully saturated. Values are limited to positive real numbers.

pov_baseline_in_meters

Introduced around 1.0.0.1, this extension adds to the player's eye level -- as of 1.0.0.1 arms are not yet adjusted accordingly. Values are limited to real numbers.

pov_baseline_in_meters was originally setup for Trismegistus. Trismegistus does away with combat elements, and therefore the arm thing funnily enough was not a problem. Nevertheless the arms are an oversight.

sky_ambience_factor

Introduced around 1.0.0.1, this extension colorizes the sky to match the global ambient light at 1. Values are limited to real numbers.

sky_emissive_factor

This extension is planned but not yet implemented. It will brighten the sky above 1 and darkens it below 1. It's meant to balance out the colours produced by #sky_ambience_factor.

sky_distance_multiplier

Introduced around 1.0.0.1, this extension works like #draw_distance_multiplier, however it only applies to maps with skies. It supersedes draw_distance_multiplier. Values are limited to positive real numbers.

sky_fadeline_multiplier

Introduced around 1.0.0.1, this extension determines a point between the fog saturation distance at 0 and the sky distance at 1 and smoothly blends things beyond that point into the sky. As if the sky is a second layer of fog beyond the first. Values are limited to real numbers between 0 and 1.



Author


Extensions in this section are intended to be filled out by the author. #international_production_title and #international_translation_title are important to fill out. Every full game Ex.ini file should include these. #software_company_name should also be considered.

Sometimes this information may be printed out in places. In a teletype-style display or an "About" window for instance. It's also good to provide the information if possible so people can find it when reading or modifying the Ex.ini file that would come with your game. It can also easily be automatically entered into a database of games or kept on file.

When translating a game into another language it's important to faithfully include all information in this section, and to not translate any of it.

email_address_of_contact

Introduced around 1.0.0.1, this extension indicates the email address of the company or author who is prepared to receive email from any and all parties who have anything to say or ask about the game. Don't fill it out unless you are up to this task. Consider using an account which can safely abandon if the interest in your game becomes overwhelming or undesirable. Values are limited to an email address.

hours_in_which_to_phone

Introduced around 1.0.0.1, this extension indicates the hours you're available to be phoned if you provide a phone number. You can put anything here, indicate your timezone, or anything else. An additional timezone neutral extension would also be helpful however no such thing exists yet. Values are limited to any string of text.

international_production_title

Introduced around 1.0.0.1, this extension indicates the title you want for your game internationally. It should be the title you originally conceived for the game in your language of choice. Though you can use any title. An English title for instance. If you think recognizability is more important. Players may want to translate your game including its title to their own language. Except this title remains the same. Values are limited to any string of text.

international_translation_title

Introduced around 1.0.0.1, this extension is a simplified version of #international_translation_title. It must be entirely composed of ASCII characters and cannot include any characters which might be illegal in file names in some computing environments. In general, be spare with special characters. ASCII includes basic/modern Latin characters only. You can translate your title into a Latin script language of your choice, or reproduce your title phonetically. Values are limited to an ASCII only POSIX and NTFS legal file name.

online_website_to_visit

Introduced around 1.0.0.1, this extension indicates the website for information and other things regarding your game. Values are limited to World Wide Web addresses.

phone_number_of_contact

Introduced around 1.0.0.1, this extension indicates a phone number where you are prepared to receive phone calls in regards to your game. Indicate the region of the world where the number is located. Values are limited to any string of text.

software_company_name

Introduced around 1.0.0.1, this extension indicates the name of the organization responsible for the game. It can be the name of or a pseudonym of the author or the title of a group etc. It will be used for sorting things like the Microsoft Windows Start menu links to your games and the location of keys your game will require in the Windows registry. Values are limited to an NTFS legal file name.

street_address_of_contact

Introduced around 1.0.0.1, this extension indicates where you want to receive mail and or visitors regarding your game. Practice caution in providing this kind of information. Values are limited to any string of text.

the_authority_to_contact

Introduced around 1.0.0.1, this extension indicates who someone should address when phoning or mailing about your game. A secretary, or yourself for instance. Values are limited to any string of text.



Boxart

Extensions in this section convey information about your game. It's not intended to be an exhaustive list of credits. You should limit the information to principal participants, celebrities you'd like to give billing too in order to make your game stand out, or just anyone of relative importance to the production of the game. For a small team there's probably room for everyone. For a mostly "one man" team, consider using #game_auteur in order to credit "the man". Information in this section is used in much the same way as that of the #Author section, however it is never functions in a non-superficial way, and translators are encouraged to translate it where applicable.

Note: you can provide any information you like via a single extension. For instance if there are more than one lead production artist on more or less equal footing, feel free to mention both of them in whatever way makes sense to you.

game_artist

Introduced around 1.0.0.1, this extension indicates the lead production artist. Values are limited to any string of text.

game_auteur

Introduced around 1.0.0.1, this extension indicates the visionary or any one person without which the game just wouldn't exist. Any role not specified will be assumed to fall upon this individuals shoulders. Values are limited to any string of text.

game_based_upon

Introduced around 1.0.0.1, this extension indicates some existing work or art if any which your game is meant to literally draw upon in some way, vividly or darkly. Values are limited to any string of text.

game_caretaker

Introduced around 1.0.0.1, this extension indicates the any domestic worker responsible for keeping the team behind the game on life support throughout its production. Values are limited to any string of text.

game_company

Introduced around 1.0.0.1, this extension indicates the title of the company behind the game. Values are limited to any string of text.

game_concept

Introduced around 1.0.0.1, this extension indicates the lead concept artist. Values are limited to any string of text.

game_dedication

Introduced around 1.0.0.1, this extension indicates who or what you'd like to dedicate the game to. Maybe your goldfish died during production for example. Values are limited to any string of text.

game_designer

Introduced around 1.0.0.1, this extension indicates the lead game design person. Values are limited to any string of text.

game_director

Introduced around 1.0.0.1, this extension indicates the lead game directing person. Values are limited to any string of text.

game_disclaimer

Introduced around 1.0.0.1, this extension indicates any kind of legal liability or whatever you'd like to assuage. Values are limited to any string of text.

game_distributor

Introduced around 1.0.0.1, this extension indicates the distributor of this game. Values are limited to any string of text.

game_edition

Introduced around 1.0.0.1, this extension indicates the edition of this game. Values are limited to any string of text.

game_features

Introduced around 1.0.0.1, this extension indicates any features you'd like to promote. Like joystick support etc. Values are limited to any string of text.

game_first_edition_date

Introduced around 1.0.0.1, this extension indicates the long date of the first edition of this game. Values are limited to any string of text.

game_first_edition_year

Introduced around 1.0.0.1, this extension indicates the year of the first edition of this game. It should be a number in the common era. Values are limited to any string of text; a whole number is best.

game_format

Introduced around 1.0.0.1, this extension indicates the medium or environment, eg. operating system, in which this game is able to function. Values are limited to any string of text.

game_label

Introduced around 1.0.0.1, this extension indicates the promotional/managerial label to which the game or peoples responsible for the game are signed. Values are limited to any string of text.

game_legal

Introduced around 1.0.0.1, this extension indicates any long text legal mumbo jumbo deemed necessary for inclusion. Values are limited to any string of text.

game_license

Introduced around 1.0.0.1, this extension indicates any content or technology licenses the game is in adherence with. Values are limited to any string of text.

game_mascot

Introduced around 1.0.0.1, this extension indicates a pet, personality, or fictional character you'd like to associate the game with. Values are limited to any string of text.

game_music

Introduced around 1.0.0.1, this extension indicates the singular person responsible for the games musical arrangements. Values are limited to any string of text.

game_musing

Introduced around 1.0.0.1, this extension indicates anything at all you'd like to include in addition to everything else. Values are limited to any string of text.

game_original

Introduced around 1.0.0.1, this extension indicates the game which this game is a remake or remix of. Values are limited to any string of text.

game_partners

Introduced around 1.0.0.1, this extension indicates those who bore chief financial responsibility during the development of the game proper. Values are limited to any string of text.

game_planner

Introduced around 1.0.0.1, this extension indicates the lead game planner. Values are limited to any string of text.

game_presented_by

Introduced around 1.0.0.1, this extension indicates the association presenting the game. Values are limited to any string of text.

game_presenters

Introduced around 1.0.0.1, this extension indicates individuals presenting the game. Values are limited to any string of text.

game_producer

Introduced around 1.0.0.1, this extension indicates the game producer, company or individual. Values are limited to any string of text.

game_programmer

Introduced around 1.0.0.1, this extension indicates the lead game programmer. Values are limited to any string of text.

game_project

Introduced around 1.0.0.1, this extension indicates the project codename or whatever before an official title was established or announced. It may be related to the edition of the game as well if the project is a remake or remix effort. Values are limited to any string of text.

game_publisher

Introduced around 1.0.0.1, this extension indicates the lead game programmer. Values are limited to any string of text.

game_publishing_date

Introduced around 1.0.0.1, this extension indicates the long date of this edition. Values are limited to any string of text.

game_rating

Introduced around 1.0.0.1, this extension indicates any kind of content ratings you'd like to apply to the game in whatever rating system seems appropriate. Values are limited to any string of text.

game_region

Introduced around 1.0.0.1, this extension indicates the global region this translation of this game has in mind. Use whatever system or scope makes sense with respect to other translations of the game in circulation or underway. Values are limited to any string of text.

game_series

Introduced around 1.0.0.1, this extension indicates the series this game is part of. Eg. KING'S FIELD II is part of the KING'S FIELD series. Values are limited to any string of text.

game_soundsuite

Introduced around 1.0.0.1, this extension indicates the composer or troop responsible for the sound effects audible in the game. Values are limited to any string of text.

game_soundtrack

Introduced around 1.0.0.1, this extension indicates the composer or troop responsible for the game soundtrack, if there is any one entity. Values are limited to any string of text.

game_studio

Introduced around 1.0.0.1, this extension indicates the name of the studio who developed the game. Values are limited to any string of text.

game_sub_series

Introduced around 1.0.0.1, this extension indicates the series within a larger series in which the game is a part of. Sometimes called a 'gaiden', though not necessarily the same thing. Values are limited to any string of text.

game_subteam

Introduced around 1.0.0.1, this extension indicates the team within a larger studio or collective who is largely responsible for the development of the game. Values are limited to any string of text.

game_subtitle

Introduced around 1.0.0.1, this extension indicates the title that usually appears in smaller letters below the main title. Values are limited to any string of text.

game_suggested_retail_price

Introduced around 1.0.0.1, this extension indicates, whether applicable or not, what you think your game should be sold for on store shelves, or what you would sell it for if you could. Players feel free to regard this value as a suggested donation. Values are limited to any string of text.

game_super_title

Introduced around 1.0.0.1, this extension indicates the title that usually appears in smaller letters above the main title. Values are limited to any string of text.

game_thanks

Introduced around 1.0.0.1, this extension indicates any thanks the game makers would like to confer. Thanks to From Software for instance. Values are limited to any string of text.

game_title_with_sequel

Introduced around 1.0.0.1, this extension indicates the title which includes the sequel number. This title may be shorthand. The sequel need not appear in the main title. It's probably best to render the sequel in Arabic numeral form to avoid any confusion. Values are limited to any string of text.

game_version

Introduced around 1.0.0.1, this extension indicates the version of the game. For instance if the game has been patched or is not intended to ever be finalized. Values are limited to any string of text.

game_writer

Introduced around 1.0.0.1, this extension indicates the lead writer. This is the script writer. Values are limited to any string of text.

game_year_published

Introduced around 1.0.0.1, this extension indicates the year of this edition. It should be a number in the common era. Values are limited to any string of text; a whole number is best.



Bugfix

Extensions in this section correct bugs in the unextended product. Some extensions in other sections may depend upon these extensions and refuse to work otherwise, other extensions may supersede these extensions. How extensions interact is decided on a case by case basis.

do_fix_any_experimental

Introduced around 1.0.0.1, this extension is equivalent to to setting all experimental Bugfix extensions. This will not set undocumented extensions. Values are limited to binary statements.

do_fix_any_nontrivial

Introduced around 1.0.0.1, this extension is equivalent to to setting all nontrivial Bugfix extensions. Nontrivial means the extensions come at some non-negligible performance overhead. Values are limited to binary statements.

do_fix_any_trivial

Introduced around 1.0.0.1, this extension is equivalent to to setting all trivial Bugfix extensions. Trivial means the extensions is negligible or free in terms of performance overhead. Values are limited to binary statements.

do_fix_asynchronous_sound

Introduced around 1.0.0.1, this extension is classified a nontrivial fix. It ensures sound effects are synchronized with the source of the sound. Values are limited to binary statements.

do_fix_clipping_item_display

Introduced around 1.0.0.1, this extension is classified a nontrivial fix. It ensures item geometry as displayed in menus does not intersect geometry that is part of the background in a non-picture menu. Values are limited to binary statements.

do_fix_controller_configuration

Introduced around 1.0.0.1, this extension is classified a trivial fix. It maps the game controller settings in the game's INI file to correct values. Values are limited to binary statements.

do_fix_elapsed_time

Introduced around 1.0.0.1, this extension is classified a trivial fix. It currently hides the elapsed time in the menu screens. It does so because the time is more often than not incorrect. As soon as someone figures out how, it will be made to display the correct time. Values are limited to binary statements.

do_fix_fov_in_memory

Introduced around 1.0.0.1, this extension is classified a trivial fix. It ensures the correct field of view values exist in memory. For example, without this fix, graphics may disappear mysteriously along the edges of the screen under some display resolutions -- it may also be necessary to enable #do_fov in order to achieve this effect. Values are limited to binary statements.

Note: may not work as expected if #do_fov is not enabled.

do_fix_graphics_device_interfacing

Introduced around 1.0.0.1, this extension is classified a nontrivial fix. For example, Sword of Moonlight instantiates a font in memory every time it redraws the screen. This can happen several times a second. This fix manages a pool of GDI resources which are reused wherever applicable and recycled as necessary. This should improve performance and conserve memory. Values are limited to binary statements.

do_fix_lighting_dropout

Introduced around 1.0.0.1, this extension is classified a nontrivial fix. Normally object lighting is turned off if you change display settings in the game menu. This extension fixes that behavior indirectly by doing the equivalent of turning on #do_lights with the number of lamps set to 3. 3 is believed to be the maximum number of lamps Sword of Moonlight will apply to an object. Setting do_lights to yes will supersede this extension. Values are limited to binary statements.

do_fix_out_of_range_config_values

Introduced around 1.0.0.1, this extension is classified a trivial fix. It clamps the possible values in the games INI file to suitable ranges and filters out impossible and or troublesome values. Values are limited to binary statements.

do_fix_oversized_compass_needle

Introduced around 1.0.0.1, this extension is classified a nontrivial fix. Sometimes the compass needle is gigantic compared to the compass. This should correct that, hopefully without any side effects. Values are limited to binary statements.

It is nontrivial because of a slight chance of side effects cropping up in menu elements if mistaken for the needle.

do_fix_slowdown_on_save_data_select

Introduced around 1.0.0.1, this extension is classified a trivial fix... because it's more work not to fix and the fix is relatively simple. In Save/Load menus every time Sword of Moonlight redraws the screen (several times a second) it tries to open 99 files in your save folder. This is hard on any disk, however on a modern hard disk drive you may not notice. On any kind of external storage disk the game will grind to a crawl. The player may not even be able to get out of the game. This extension fixes this behavior. Values are limited to binary statements.

do_fix_spelling_of_english_words

Introduced around 1.0.0.1, this extension is classified a trivial fix. Sword of Moonlight is/was a Japanese product first. Originally it contains some English words which are not always spelled correctly. This extension fixes these instances wherever applicable, so your game should appear more professional to players versed in English. Values are limited to binary statements.



Detail

*alphafog_skyflood_constant

*alphafog_skyfloor_constant

*ambient_contribution

*cursor_presentation_timeout

*lights_ambient_multiplier

*lights_calibration_factor

*lights_constant_attenuation

*lights_diffuse_multiplier

*lights_distance_multiplier

*lights_exponent_multiplier

*lights_linear_attenuation

*lights_maximum_lamp_lights

*lights_quadratic_attenuation

*lights_vs_1_x_unroll_x

*mipmaps_maximum_anisotropy

*mouse_...th_button_action

*mouse_deadzone_multiplier

*mouse_horizontal_multiplier

*mouse_left_button_action

*mouse_menu_button_action

*mouse_middle_button_action

*mouse_right_button_action

*mouse_saturate_multiplier

*mouse_tilt_left_action

*mouse_tilt_right_action

*mouse_vertical_multiplier

*numlock_initial_state

*numlock_key

*pause_button_default

*wasd_and_mouse_mode



Editor

Extensions in this section deal exclusively with the editing tools which authors use to make new Sword of Moonlight games. For the most part other sections pertain to tools only in so far as if and when a tool includes previews of in game elements; extensions affecting the project should apply, however in practice this may not always be the case.

language_pack_to_use

Introduced around 1.0.0.1, this extension selects a language pack from the text folder; not the lang folder! A language pack in the text folder is normally a compressed .zip archive. It can also be a directory if uncompressed. You should specify the name of the language pack file, without the .zip extension. Values are limited to a legal NTFS file title.

A language pack is a translation (into another language) of the various editing tools which make up Sword of Moonlight. See #Locale for game translation extensions.



Folder

Extensions in this section provide some flexibility to the Sword of Moonlight install/runtime environment.

alternative_data_folder

Introduced around 1.0.0.1, this extension specifies a folder to use in place of the data folder. For editing tools and projects it applies to the install data folder. For a runtime it applies to the game's data folder. Values are limited to a legal NTFS address.

alternative_font_folder

Introduced around 1.0.0.1, this extension specifies a folder to use in place of the font folder. For editing tools and projects it applies to the install font folder. For a runtime it applies to the game's font folder. Values are limited to a legal NTFS address.

alternative_lang_folder

Introduced around 1.0.0.1, this extension specifies a folder to use in place of the lang folder. For editing tools and projects it applies to the install lang folder. For a runtime it applies to the game's lang folder. Values are limited to a legal NTFS address.

alternative_text_folder

Introduced around 1.0.0.1, this extension specifies a folder to use in place of the text folder. For editing tools and projects it applies to the install data folder. A runtime should not include a text folder. Values are limited to a legal NTFS address.

alternative_tool_folder

Introduced around 1.0.0.1, this extension specifies a folder to use in place of the tool folder. For editing tools and projects it applies to the install tool folder. A runtime should not include a tool folder. Values are limited to a legal NTFS address.

do_use_users_saved_games_folder

Introduced around 1.0.0.1, this extension in the affirmative indicates that files generated by the player should be saved to the special folder where Windows saves games. The special folder is different depending upon the version of Windows. For a read only game (eg. a CD-ROM) this extension kicks in automatically and cannot be overridden.

Inside this folder, there will be a folder named after the game, or the software company responsible for the game; in which case the folder named after the game will be inside that folder. In the folder named after the game you will find the save folder and the game's INI file.

As of SomEx.dll ver. 1.0.0.1 this feature is not fully implemented. Future releases should defer to this folder whenever possible in looking for fonts and translation information and any files the player should be able to modify in order to customize their experience. Values are limited to binary statements.

You may use any folder you like in place of the one Windows has established. See #saved_games_folder.

saved_games_folder

Introduced around 1.0.0.1, this extension specifies a folder to use instead of the folder Window's saves saved games to. See #do_use_users_saved_games_folder for details. Values are limited to a legal NTFS address.

Note: this extension takes its name from the "Saved Games" folder introduced by Windows Vista. Ie. it does not map directly to the save folder.



Joypad



Keygen



Launch



Locale



Option

Extensions in this section are generally fairly noteworthy. They act like master switches, usually for fairly major extension complexes. As a rule-of-thumb you can usually fine tune the extensions via the extensions in the #Detail section, which are all named according to the extensions in this section. There are however no actual rules regarding how extensions may interplay with one another, and it is very often the case Option extensions will dictate or interact with extensions found in other sections.

Note: Updating SomEx.dll has a greater likelihood of affecting the effects exhibited by these extensions than with other extensions. As of SomEx.dll ver. 1.0.0.1 it is not possible to indicate the version of SomEx.dll an Ex.ini file is tailored to. A future release will probably make that a reality, however even in such an event there is no guarantee.

Please bear in mind. The wording for most or all of these extensions can be a bit strained because in reality they are directives which give permission to related extensions to go ahead and do what they do. Sometimes the functionality is built in and just needs the go ahead, other times there is no built in functionality and the extension just acts as a permission slip for other extensions. It's handy to think of the Option section like the circuit breaker for the larger extension framework. Most extensions are tied into it, but not all. Many are not.

do_alphafog

Introduced around 1.0.0.1, this extension in the affirmative corrects the blending of fog and other transparent visual elements. As of SomEx.dll ver. 1.0.0.1 in order to blend shadows and fog the shadow textures must be marked for shadow correction (correct=shadow) in the images key. You may mark custom textures this way in order to create your own shadows. See #Keygen for details. Values are limited to binary statements.

do_ambient

Introduced around 1.0.0.1, this extension in the affirmative effects ambient and diffuse lighting. As of SomEx.dll ver. 1.0.0.1 by default it borrows from diffuse light and contributes a proportional amount of ambient light. This generally has the effect of creating more natural lighting, simulating how photons scatter as their energy is absorbed by surrounding materials. Values are limited to binary statements.

do_analog

Introduced around 1.0.0.1, this extension in the affirmative allows for analog play in terms of player movement etc. As of SomEx.dll ver. 1.0.0.1 this is still largely experimental. Mouse controls support analog like behavior but they are bumpy around the edges. The #Joypad section can be used to setup an analog controller which are also bumpy. Without doing so a controller in game will not produce analog behavior. Traditionally analog controls are achieved by feathering the digital inputs. With some smoothing of the players point of view this will probably be a viable option. Another simple technique is to modulate the speed of the player while otherwise offering 8-way digital movement. It's unclear at this point what kind of approach will ultimately amount to the best analog experience. Values are limited to binary statements.

do_anisotropy

Introduced around 1.0.0.1, this extension in the affirmative repurposes the "Texture Mode" setting in the options menu. It will read "Anisotropy" instead. The 3 settings then change the anisotropic filtering state. In order for anisotropic filtering to be effective, #do_mipmaps should also be enabled. Values are limited to binary statements.

do_antialias

Introduced around 1.0.0.1, this extension in the affirmative enables hardware antialiasing if available. You may be able to produce nice screenshots with this extension, the implementation however is not yet final, and therefore cannot yet be recommended for play. Values are limited to binary statements.

do_cursor

Introduced around 1.0.0.1, this extension in the affirmative results in a much more expressive cursor when the mouse is hovered over the game window. This extension is generally recommended for window play. Values are limited to binary statements.

A minimal cursor will appear in window mode even if this extension is not enabled.

do_dither

Introduced around 1.0.0.1, this extension in the affirmative causes a hardware dither effect to be applied in 16bit colour modes. Sword of Moonlight requests (of the graphics hardware/drivers) dithering in 16bpp mode, however almost no modern hardware will accommodate the request. Therefore this extension restores a little piece of Sword of Moonlight lost to the eons. Classic KING'S FIELD games have all been dithered. And the dithering better compliments the 15bit textures which come with Sword of Moonlight. It's arguably better looking than a linear filter which tends to stretch texels out and make the 16bit colours look flat. Print media has used dithering for centuries.

It's recommended you combine this extension with #do_highcolor since that will force all modes into a 16bit colour mode. By default do_dither has no effect when playing in 32bpp (True Color) modes. Values are limited to binary statements.

If anyone would like to supply their own custom dither mask, this kind of feature can be facilitated in short order on demand.

do_fov

Introduced around 1.0.0.1, this extension is a little different. If it's not enabled field of view parameters will probably be the same as what you would expect from Sword of Moonlight. If it is enabled various extensions will make their own judgments about what kind of field of view parameters are acceptable. Enabling also enables field of view override extensions, in case you'd like to control field of view manually. You may need to enable this extension to see any effect from important extensions such as #do_fix_fov_in_memory. Values are limited to binary statements.

do_gamma

Introduced around 1.0.0.1, this extension in the affirmative uses modern shader technology to reproduce the gamma ramps employed by Sword of Moonlight. Reproducing the effect perfectly is computationally fairly expensive. If there is much demand for this extension, in the future the default behavior will probably be to approximate the ramps via a parametric function of some kind. At present there is no extension in the #Detail section to indicate you don't want an approximation. Values are limited to binary statements.

The Sword of Moonlight Extension Library generally speaking always defers to Sword of Moonlight's unextended behavior in lieu of an extension, however this is one of the few cases where doing so is just neither practical nor ideal.

do_green

Introduced around 1.0.0.1, this extension in the affirmative uses the 565 High Color model. 565 means 5 red bits, 6 green bits, and 5 blue bits. This is the model Sword of Moonlight uses in 16bit mode. However the Sword of Moonlight Extension Library uses 555 by default. The extra green bit is said to add a great deal more realism to a picture, however it tends to shift color to the green spectrum, especially at low light levels, resulting in an all around sickly hue, and somewhat psychedelic banding in the lower strata of colors. Its not bad if you want a green hue or more psychedelic coloring. However the textures that come on the Sword of Moonlight compact disc are all 555 like the PlayStation, so 555 color seems like a better fit. It's unclear why the Sword of Moonlight runtimes look for 565, it may have been a more standard or more popular color mode when dithering was commonly implemented in hardware. Modern day hardware has dropped dithering support almost universally, making banding artifacts the norm for older games.

See #do_dither for a dithering extension. And see #do_highcolor for an extension that lets the player choose which mode they prefer. Values are limited to binary statements.

do_hdr

Introduced around 1.0.0.1, this extension in the affirmative enables "High Dynamic Range" lighting. What the opposite means is when you take a perfect white light and shine it on a 3D graphic with a texture applied, the pixels intersecting the graphic on screen can never be brighter than the texture itself. With HDR lighting, the pixels can go over white, meaning a very bright white light will make any texel in the texture that is not perfect black eventually reach perfect white... in other words the colour is not clamped at 1. For a long time color was always clamped at 1 because frame buffers that store video images were assumed to be at most 1 byte per colour channel. 1 byte can be at most 255, which meant perfect white. 255 still means perfect white, except nowadays we can store numbers larger than 255 in memory, so microchips are able to do calculations outside that limited range, and that's what HDR means.

Without HRD lights may interact in very unnatural ways, even by real-time lighting standards. Values are limited to binary statements.

do_highcolor

Introduced around 1.0.0.1, this extension in the affirmative repurposes the "Colors" setting in the options menu. It will read "High Color" instead. 32bpp will no longer be available. The player will get the option of 5:5:5 and 5:6:5, for 555 High Color and 565 High Color respectively.

This setting is generally recommended. Especially in combination with #do_dither. Add #do_anisotropy to give your game a uniform appearance regardless of display settings. Values are limited to binary statements.

do_invert

Introduced around 1.0.0.1, this extension in the affirmative flips the Sword of Moonlight Extension Library brightness model in the following way. Normally the brightness of every pixel is calculated when the pixel is being drawn. Sometimes pixels are drawn many times over, which can be especially problematic for transparent pixels because the brightness tends to double down. When inverted everything is drawn without regard for brightness, then in the end the whole screen is brightened. Menus and other elements meant to be unaffected by brightness changes are darkened so when the screen is brightened they are restored to their original levels.

This extension is generally recommended and should yield better performance if anything performance wise. It does have some side effects which come into play at the ends of the colour spectrum. Mainly when darkened pixels can never be perfectly white, and when brightened pixels can never be perfectly dark. The discrepancy will depend upon the level of the adjustment. Any black mattes will still be perfect black.

A "Deep Color" buffer if available could be used to prevent the loss of information. There is however no extension implementing a deep colour buffer and it might not be worth it unless there were other deep colour extensions already at play. Values are limited to binary statements.

do_lights

Introduced around 1.0.0.1, this extension in the affirmative will take Sword of Moonlight out of the business of object lighting (lamps) completely. This is computationally fairly intensive, however it is generally recommended because Sword of Moonlight is generally not reliable in the object lighting dept. Mainly if the player changes the display settings, object lighting will go way at least until the player crosses over into a new map. This is considered an undesirable bug, in which case the alternative is do_lights. #do_fix_lighting_dropout is a round about way of turning on do_lights and setting #lights_maximum_lamp_lights to 3.

The default behavior of do_lights is to support as many simultaneous lamp lights as necessary. The current hard limit is around 16 per object. The Sword of Moonlight Extension Library currently has no model for knowing or guessing what lights Sword of Moonlight would normally apply to an object, so it just applies all lights that overlap with the object. The lighting will be different if there are many light sources involved. If this produces unnatural results, consider #do_hdr and or adjusting the lighting (see #Details)

The Extension Library decides which lights to turn off and on per object (in reality chunks of pieces of objects) by building a database of bounding boxes which it matches to various characteristics of the objects being displayed. In the future the Extension Library may more and more take over the responsibility of rendering things altogether. In which case some of the database and object recognition business will become obsolete or at least less round about.

In the future there will be unified lighting models where the map pieces are lit with the same lights as the objects. In this future do_lights will apply to map pieces in the same way it does to objects. Values are limited to binary statements.

do_log

Introduced around 1.0.0.1, this extension in the affirmative enables logging. A file will be written to the tool or game folder. For the runtimes for example, db.log would apply to som_db.exe and rt.log to som_rt.exe. Main.log for SOM_MAIN and so on. The same events which would be written to the log in the future will also be sent to the SOM_EX console with or without do_log. You can change the log levels in the #Output section. The log levels apply to console output as well. This extension however refers to writing to files. You can disable console output via #do_console or doing something like log_bar=-1 in the Output section. Values are limited to binary statements.

do_mipmaps

Introduced around 1.0.0.1, this extension in the affirmative generates mipmaps for all textures on the fly. This is generally a very good idea. It's also required if you want to take advantage of the images key (see #Keygen for details). Values are limited to binary statements.

Sword of Moonlight TXR files seem to include mipmap data. However none of the textures which come with Sword of Moonlight do. In general Sword of Moonlight mipmaps look really bad, mainly because anisotropic filtering is not managed. Not having mipmaps is really bad, because its slow and creates "shimmering" artifacts. Having mipmaps without anisotropic filtering is also bad, because the unfiltered mipmaps become infinitely blurry at more oblique angles. Use #do_anisotropy to let the player adjust anisotropic filtering to their preference. It can be a real trade off in terms of performance and quality. Indiscriminate anisotropic filtering can be costly. Unfortunately there is no real practical way to tweak things on a situational basis. You can however use the images key to tweak things on a per texture basis. See #Keygen for details}}

A little trivia, the "Trilinear" texture mode in the options screen actually means a linear filter with a linear mipmap filter.

do_mouse

Introduced around 1.0.0.1, this extension in the affirmative adds a universal mouse to the mix. This mouse is simple to configure via the #Detail section. More sophisticated mouse support is meant to be facilitated via the #Joypad sections. Values are limited to binary statements.

do_pause

Introduced around 1.0.0.1, this extension in the affirmative adds a pause feature to the mix. This extension comes highly recommended. It's a good idea to take advantage of #do_auto_pause_window_while_inactive while you are at it. Values are limited to binary statements.

do_rangefog

Introduced around 1.0.0.1, this extension in the affirmative uses a different kind of fog model which is based on distance rather than depth. Without it the fog at a certain point will appear to change as the player turns around. Values are limited to binary statements.

do_smooth

Introduced around 1.0.0.1, this extension in the affirmative performs a fairly inexpensive kind of smoothing over every pixel on a given screen. Under most circumstances there comes a point where a screen buffer must be copied over the entire screen in order to perform some effects in screen space. Without do_smooth the pixels will be mapped one to one during this copy for a crisp presentation. With do_smooth the pixels will be mapped in the middle, so all pixels will be a blend of their surrounding pixels.

Whether your prefer your vision crisp or smooth, where smoothing really pays off is around objects in the far distance. It creates a kind of "depth of field" effect on the horizon, but more dramatically for spindly things like grass in the distance, the effect adds a kind of fullness which arguably amounts to a more natural rendering. See for yourself. It's a trade-off but the pros usually outweigh the cons. Values are limited to binary statements.

do_sounds

Introduced around 1.0.0.1, this extension in the affirmative ensures that virtually all sound effects are played to completion. Normally Sword of Moonlight will play a very small number of sounds at one time (figure needed) and drop the rest. Currently this extension supports up to 8 instances of a single sound effect being played simultaneously before any sounds of the same sound effect will be dropped.

The limit can be increased if required, however 8 instances of the same sound usually means adding one more will not be distinguishable. However if the 8 instances are far away and the sounds being dropped are nearby a stronger case can be made. Unfortunately prioritizing like sounds according to distance does not really help unless you are willing to allow sounds to be cutoff midway through. Values are limited to binary statements.

do_syncbgm

Introduced around 1.0.0.1, this extension in the affirmative synchronizes background music (BGM) as with sound effects. Note that this extension will probably have no effect if #do_fix_asynchronous_sound is not applied. This is handy if your BGM is meant to correspond to real-time happenings in your game world, or if you want to use timers to determine when music should change. And for the record do_syncbgm recreates the way the BGM works in KING'S FIELD II.

This means menu and message screens will not play BGM. There is currently no extension to play an alternative BGM in menus. You can however play BGM over message screens (for dramatic effect) if you start the BGM in the same event that displays the message. In the future it might be possible to not pause BGM during messages, however doing so would negate the real-time synchronization benefits of the extension. An alternative could be adding more popup messages. No extensions exist for that yet, but one could definitely be added if need be. Values are limited to binary statements.

do_wasd

Introduced around 1.0.0.1, this extension in the affirmative adds "WASD" walking controls to the keyboard as if they were always there (meaning you can then remap them via the #Keymap) and mirrors "PL;'" controls for left handed players. Values are limited to binary statements.

Accessibility features are one of the few non-optional changes imposed by the Sword of Moonlight Extension Library. Ie. some of Sword of Moonlight's keys have been changed around to accommodate left handed players. See Sword of Moonlight Extension Library#Accessibility for more information.



Output

...log_..._bar

Introduced around 1.0.0.1, this extension has a variable syntax and can be specified as many times as necessary. The parts are A_log_B_C_bar where A_ B_ and C_ are optional. The simplest form, log_bar sets the bar which non-debug log events must pass below (less than or equal to) in order to be included in the log or console output.

There is more than one log and more than one bar per log, in fact there are probably hundreds. You can set a particular log's bars via A_. Eg. SOM_MAIN's log is main.log, so main_log_bar will set the bars for only SOM_MAIN. With B_ you can set the bars for events originating in a single "translation unit" or any units which match B_ up to the end of B_; all legal non-alphanumeric characters are treated as underscores. Finally C_ can set particular kinds of bars. Eg. log_debug_bar sets the debug bars only, which is useful because debug bars are unaffected by default. The default setting for bars is 0, except for debug bars which default to -1. Values are limited to whole numbers between +/-65534.

Note: The A_log_B_C_bar syntax is actually shorthand. It has some deficiencies. For example, log_som_debug_bar is ambiguous, because it can mean the debug bars for translation units beginning with "som" or it can mean the "som.debug" translation unit. The match is greedy, so it will mean the latter, and the former will be impossible to specify. A longform syntax has been devised but is not yet implemented as of SomEx ver. 1.0.0.1.

A "translation unit" is a source code object, like SomEx.cpp. SOM_EX should include a comprehensive detailing of logging and console output.

*do_missing_file_dialog_ok

*...function_overlay_contrast

*...function_overlay_eclipse

*...function_overlay_mask

*...function_overlay_tint



Script

*system_fonts_to_use

*fonts_to_use_instead_of_...



System



Window

*directx_version_to_use_for_window

*do_auto_pause_window_while_inactive

*do_center_picture_for_fixed_display

*do_force_fullscreen_inside_window

*do_force_immediate_vertical_refresh

*do_not_compromise_fullscreen_mode

*do_refresh_during_vertical_blank

*do_scale_640x480_modes_to_setting

*do_use_interlaced_scanline_ordering

*restrict_aspect_ratio_to

*restrict_frame_rate_to

*shader_compatability_level

*shader_model_to_use

*window_title_to_use