Melee GCI Compiler is an application and scripting language that makes it easy for Super Smash Bros. Melee mod developers to inject custom code and data into Melee save files.
Mozilla Public License 2.0
35
stars
9
forks
source link
Various new features and fixes to make 20XXTE source port possible #4
After this merge, the release version of Melee GCI Compiler will be updated to version 1.1.0.
New Features
!blockorder
When Melee performs a save, the layout of the blocks in the save file can change. !blockorder allows you to change the block layout in your compiled GCI in case you are trying to match the layout of an existing Melee save, as is the case with the 20XXTE source port (or if there is a specific functionality to the block layout that has not yet been discovered).
!patch
Like !gci, but writing data while in patch mode defers that data from being written until the very end of compilation, right before the GCI is packed. If !blockorder is used, block reordering happens before this as well, so the address specified by !patch is absolute and does not "follow" any blocks around. Using !loc or !gci after !patch will disable patch mode for following data writes.
!fill
Writes the pattern in the second argument the number of times specified in the first argument. The pattern can be hex (eg. ff) or binary (eg. %11111111). The pattern can be any number of bytes long.
!fill 0x80 ff will fill 0x80 (128) bytes with ff.
!fill 0x80 f0f0 will fill 0x80 half-words (256 bytes) with f0f0.
Fixes/Changes
Fixed a bug where whitespace inside of a !string command would be trimmed, resulting in the output being different from expected.
!string now has any escape characters processed, eg. \n is written to memory as the byte 0xa, rather than being written literally.
Fixed a bug where writing binary data, eg. %00000001, would not always correctly pad to be byte-aligned.
An MD5 hash was added to the compiler output so that the integrity of the output can be more easily verified. This is useful if you are restructuring your script but want to make sure the contents of the GCI output doesn't change.
Added some additional details to the docs and usage text.
After this merge, the release version of Melee GCI Compiler will be updated to version
1.1.0
.New Features
!blockorder
When Melee performs a save, the layout of the blocks in the save file can change.
!blockorder
allows you to change the block layout in your compiled GCI in case you are trying to match the layout of an existing Melee save, as is the case with the 20XXTE source port (or if there is a specific functionality to the block layout that has not yet been discovered).!patch
Like
!gci
, but writing data while in patch mode defers that data from being written until the very end of compilation, right before the GCI is packed. If!blockorder
is used, block reordering happens before this as well, so the address specified by!patch
is absolute and does not "follow" any blocks around. Using!loc
or!gci
after!patch
will disable patch mode for following data writes.!fill
Writes the pattern in the second argument the number of times specified in the first argument. The pattern can be hex (eg. ff) or binary (eg. %11111111). The pattern can be any number of bytes long.
!fill 0x80 ff
will fill 0x80 (128) bytes withff
.!fill 0x80 f0f0
will fill 0x80 half-words (256 bytes) withf0f0
.Fixes/Changes
!string
command would be trimmed, resulting in the output being different from expected.!string
now has any escape characters processed, eg.\n
is written to memory as the byte0xa
, rather than being written literally.%00000001
, would not always correctly pad to be byte-aligned.