Skip to content
Liu Wenyuan edited this page Sep 13, 2020 · 6 revisions

Bytecode 17 is a new bytecode version in the GMS2 runtime (2.2.1+).

Huge thanks to @colinator27 and @LinXP for work on researching this.

TGIN: New chunk

For discussion, see: https://github.com/krzys-h/UndertaleModTool/issues/70

This is a new chunk that seems to stand for Texture Group INfo. Probably related to performance improvements mentioned in release notes for this runtime. Here is the specification:

TGIN structure - likely stands for Texture Group Info
Chunk introduced in 2.2.1 with new texture functions
---

Int32 - probably chunk format version number, always 1

PointerList<T> structure. Each item represents a texture group:
    32-bit string pointer - Name
    32-bit pointer #1
    32-bit pointer #2
    32-bit pointer #3
    32-bit pointer #4
    32-bit pointer #5
    
    #1 leads here:
    SimpleList<int> of texture page IDs the group has
    
    #2 leads here:
    SimpleList<int> of sprite IDs the group has
    
    #3 leads here:
    SimpleList<int> of Spine sprite IDs (normal sprite ID, just this has Spine sprites separated) the group has
    
    #4 leads here:
    SimpleList<int> of font IDs the group has
    
    #5 leads here:
    SimpleList<int> of tileset IDs the group has

FONT.AscenderOffset

For discusson, see https://github.com/krzys-h/UndertaleModTool/issues/79

A new int32 value between ScaleY and the Glyphs list

    class UndertaleFont
    {
        // ...
        float ScaleX;
        float ScaleY;
        if (GeneralInfo.BytecodeVersion >= 17)
            int AscenderOffset; // NEW
        UndertalePointerList<Glyph> Glyphs;
    }

YYC games

YYC games no longer have empty CODE, VARI and FUNC chunks. Instead, these chunks don't exist at all. See https://github.com/krzys-h/UndertaleModTool/issues/89