Code library and resources for the X16
The x16-c-packages repository is organized into packages, each containing a library of C and assembly code, tooling, and assets. Each package is defined by a package.yaml file that specifies the package name, version, type, and dependencies. The package.yaml file also includes metadata about the package, such as a description, author, and license.
name: text.utext
version: 1.0.0
type: hybrid (or library, tool, asset)
- library: A library of C and assembly code that can be used by other packages. It cannot be executed on its own.
- hybrid: A package that contains both a library and tooling. It can be used by other packages and also executed on its own.
- tool: A package that contains tooling that can be executed on its own. It cannot be used by other packages.
- asset: A package that contains assets that can be used by other packages. It cannot be executed on its own.
Each package should follow the following structure:
package.yaml
README.md
src/ (library source code)
include/ (library header files)
test/ (library test code)
tools/ (executable tools)
data/raw/ (raw data)
data/c/ (C data)
data/x16/ (X16 data)
Use the installer script in this repository to vendor a package into another project while preserving the package layout:
perl /path/to/x16-pack/scripts/install-package.pl --project /path/to/your-game audio.adsrThat copies the package into the consuming project's packages/ tree:
/path/to/your-game/packages/audio/adsr/1.0.0/
Dependencies listed in package.yaml are installed first. A version can be
requested explicitly with name@version:
perl /path/to/x16-pack/scripts/install-package.pl --project . graphics.sprite
perl /path/to/x16-pack/scripts/install-package.pl --project . audio.adsr@1.0.0Useful flags:
--dry-runshows what would be copied.--forcereinstalls a package if that version is already present.--include-testscopiestest/directories too.