IsmAvatar
|
|
Posted on: April 23, 2011, 11:49:21 pm |
|
|
LateralGM Developer
Location: Pennsylvania/USA Joined: Apr 2008
Posts: 877
|
Herein I'll try to maintain a full listing of changes between GM8.0 (800) and GM8.1 (810). This information can kind of be gleaned by carefully reading the GM Release notes, and dumping the irrelevant junk. http://store.yoyogames.com/downloads/gm4win/release-notes.htmlNote that, at this time, none of the changes in 810 affect the filesize. They have finally learned to recycle bytes. Also note that almost all of the changes are completely backwards compatible, meaning that if you change the version identifier back to 800, it will load in GM8.0, although some minor fields may have incorrect values (e.g. Font Range Min usually changed to 255). 8.1.X (oldest)Version identifier appearing after magic number changed from 800 to 810. Font "Range Min" bytes now shared with Charset (default 0). First 2 bytes (little endian) still indicate Range Min. Next byte indicates charset identifier. Final byte reserved (0). 8.1.69Font "Range Min" and Charset bytes now merged with Anti-Aliasing (AA) selection (default 3). Final byte after the charset identifier now indicates the AA. 0 for Off, other values are 1, 2, and 3. Still uncertain what the different values of anti-aliasing mean. Game Settings "Uninitialized variables" bytes now shared with "Throw an error when arguments aren't initialised correctly." (I abbreviate it as "Mismatched Arguments" or "Parameter Checking". Default On or 1). First byte is a bit-share, where Uninitialized Variables occupies &0x01, and Mismatched Arguments occupies &0x02. 8.1.71-91No known changes. LGM is at this point. 8.1.106May have changed all strings, especially script code, to unicode support. Unconfirmed. 8.1.107-108No known format changes. Introduces new functions ansi_char(?), get_function_address(?), string_byte_length(?), string_byte_at(?). 8.1.109-123No known changes. 8.1.125May have changed the saved room settings format. Unconfirmed. 8.1.126-135No known changes.
|
|
« Last Edit: August 28, 2011, 10:53:56 pm by IsmAvatar »
|
Logged
|
|
|
|
|
|
|
|
|
|
|
Josh @ Dreamland
|
|
Reply #8 Posted on: August 14, 2011, 09:58:58 am |
|
|
Prince of all Goldfish
Location: Pittsburgh, PA, USA Joined: Feb 2008
Posts: 2950
|
We have no say in the contents of the GM format. Those encodings will always be hard-coded until Yoyo collectively develops a cerebrum. In the meantime, the EGM format can easily describe the encoding of the text it stores, whether needed on a per-game, per-object/script, or per-code-snippet basis. If you feel that is necessary, now is the time to tell us so we can include it in the first EGM spec. In that case, for scripts, we would add it to the YAML file that denotes the script file, while for events, we would include it in the object's EEF Descriptor. Don't worry, though; I made the spec very extensible (it's largely zipped YAML), so we *can* add it in later versions anyway. I just think that'd be something to throw in from square one if we're going to run with it.
|
|
« Last Edit: August 14, 2011, 10:13:13 am by Josh @ Dreamland »
|
Logged
|
"That is the single most cryptic piece of code I have ever seen." -Master PobbleWobble "I disapprove of what you say, but I will defend to the death your right to say it." -Evelyn Beatrice Hall, Friends of Voltaire
|
|
|
|
|
Josh @ Dreamland
|
|
Reply #11 Posted on: August 14, 2011, 10:39:06 am |
|
|
Prince of all Goldfish
Location: Pittsburgh, PA, USA Joined: Feb 2008
Posts: 2950
|
I've considered support for extended character sets by replacing the symbol with the concatenation of its unicode number and two dollar signs. For instance, if we opted to go all out with UTF-16, I'd replace `int piñas;' with `int pi$00F1$as;'. This would rely on a largely unsupported compiler feature, but it'd work for our purposes since all of our presently planned platforms are reached through some version of the GCC.
UTF-16 is, of course, serious overkill for the wants of 99% of our user base, so by default we'd certainly go with UTF-8. I was just wondering if it would be frugal to insert a delimiter up front. Like I said, though, we could always add support for other encodings in later.
|
|
|
Logged
|
"That is the single most cryptic piece of code I have ever seen." -Master PobbleWobble "I disapprove of what you say, but I will defend to the death your right to say it." -Evelyn Beatrice Hall, Friends of Voltaire
|
|
|
|
Josh @ Dreamland
|
|
Reply #13 Posted on: August 14, 2011, 11:17:45 am |
|
|
Prince of all Goldfish
Location: Pittsburgh, PA, USA Joined: Feb 2008
Posts: 2950
|
I'd rather have a draw_text_unicode. Anyway, we have a number of options.
1) Like Yoyo, we can allow selecting ranges of unicode chars to include in the font texture. 2) We can use TTF to load the glyphs into GL lists, and draw any glyphs not encompassed by those list ranges manually. 3) We can get creative, as many unicode glyphs are simply a letter with a symbol drawn over them.
While it would require flipping on antialiasing to look decent, (2) seems to be the most practical option. Perhaps we could merge (1) and (2), drawing any symbol we have in our texture as a sprite, and rendering the rest as primitives.
|
|
|
Logged
|
"That is the single most cryptic piece of code I have ever seen." -Master PobbleWobble "I disapprove of what you say, but I will defend to the death your right to say it." -Evelyn Beatrice Hall, Friends of Voltaire
|
|
|
luiscubal
|
|
Reply #14 Posted on: August 14, 2011, 01:06:39 pm |
|
|
Joined: Jun 2009
Posts: 452
|
so by default we'd certainly go with UTF-8 If UTF-8 covers 100% of your use-cases, and is the best option for 99% of your audience, why even bother to have the *option* to go UTF-16? I'd replace `int piñas;' with `int pi$00F1$as;' Are you talking about file formats or compilation result? (this topic seems to have been mostly about file formats, but your comment about GCC seems more relevant in the context of compilation) If you're talking about file formats, I say ignore all that junk and go all-out on UTF-8, which in worst case will result in some weird characters on obsolete versions of GM(so, yes, I'm suggesting that going UTF-8 might be acceptable even for gm6 and gmk). If you're talking about compilation result, then feel free to do whatever you want. Your $$ suggestion seems a bit wasteful in terms of size, but whatever works for you without introducing weird bugs in the compiler is perfectly fine, since the compiled result is not something most people would see anyway.
|
|
« Last Edit: August 14, 2011, 01:08:22 pm by luiscubal »
|
Logged
|
|
|
|
|