RetroLemmini INI files use the same format as Java properties files [1]. Files may be encoded in ASCII, UTF-8 (with or without a byte-order mark, or BOM), UTF-16 (with BOM), or UTF-32 (with BOM). UTF-8 is the recommended encoding. Because UTF-32 requires support from the Java runtime environment, and such support is not guaranteed to be present, use of UTF-32 is strongly discouraged. Additionally, all forms of "extended ASCII" or "ANSI" other than UTF-8 are not supported.


Each property may use either of the following types:

String: A piece of text. May contain any Unicode characters. Leading and trailing space is not ignored during parsing, although it's usually stripped later.

Integer: An integer value within the range of -2,147,483,648 to 2,147,483,647, as decoded by Java's Integer.parseInt method [2], with the following differences:

         Leading and trailing space is ignored.

         Numbers may be decimal (base 10), hexadecimal (base 16), or binary (base 2). To indicate a base other than decimal, place one of the following before the number without adding spaces: 0x or 0X for hexadecimal, or 0b or 0B for binary. Non-decimal values must be positive.

         "Infinity" or "-Infinity" (case-insensitive and without quotes) may be used to represent 2,147,483,647 and -2,147,483,648, respectively. These values have special meaning in certain parts of RetroLemmini (for example, to represent an infinite number of a skill).

         Some integer parameters accept color values. While any base may be used with these, it's best to use hexadecimal as it's the easiest to work with here. Color values are in RGB or ARGB format using the form 0xAARRGGBB, where RR is the red value, GG is the green value, BB is the blue value, and AA is the alpha value. Most color parameters ignore the alpha part; in such cases, that part can be omitted.

         Technically, non-ASCII digits are supported, but their use is not recommended.

Floating point: A floating-point value as decoded by Java's Double.valueOf method [3], except the values Infinity and NaN are not case-sensitive. Leading and trailing space is ignored.

Boolean: A true/false value as decoded by Java's Boolean.parseBoolean method [4]. Leading and trailing space is ignored.

List: A series of values separated by commas, with zero or more spaces on each side of each comma. Strings that are used in lists must not contain commas.



Links:
[1]: https://docs.oracle.com/javase/8/docs/api/java/util/Properties.html#load-java.io.Reader-
[2]: https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html#parseInt-java.lang.String-int-
[3]: https://docs.oracle.com/javase/8/docs/api/java/lang/Double.html#valueOf-java.lang.String-
[4]: https://docs.oracle.com/javase/8/docs/api/java/lang/Boolean.html#parseBoolean-java.lang.String-