# Cauldron2D.GameMaker v0.2.1 - Table of Contents

> Reads GameMaker games' data files for Cauldron2D: sprites, texture pages, tilesets, objects and their events, rooms with their layers, sounds, fonts and paths.

## Pages

- [Cauldron2D.GameMaker](readme.md)
- [Changelog](changelog.md)

## Modules

- [Cauldron2D.GameMaker.Background](Cauldron2D.GameMaker.Background.md): A background (a `BGND` entry): a picture GameMaker Studio 1 rooms draw behind or in
front of everything and cut tiles from, and, from GameMaker Studio 2, a tileset.
- [Cauldron2D.GameMaker.Bytes](Cauldron2D.GameMaker.Bytes.md): Values read at absolute offsets of a GameMaker data file.
- [Cauldron2D.GameMaker.Chunks](Cauldron2D.GameMaker.Chunks.md): The chunks of a GameMaker data file: a `FORM` holding four-letter named chunks, each
a length and its bytes.
- [Cauldron2D.GameMaker.Code](Cauldron2D.GameMaker.Code.md): The game's code, as a module that answers for each piece of compiled code by name.
- [Cauldron2D.GameMaker.Collide](Cauldron2D.GameMaker.Collide.md): Collisions between instances, as GameMaker decides them.
- [Cauldron2D.GameMaker.Colour](Cauldron2D.GameMaker.Colour.md): GameMaker's colour functions, as `{r, g, b}`.
- [Cauldron2D.GameMaker.Data](Cauldron2D.GameMaker.Data.md): A GameMaker game's data file read whole: `data.win` on Windows, `game.ios` on macOS
and iOS, `game.unx` on Linux, `game.droid` on Android. Every platform's file has the
same layout.
- [Cauldron2D.GameMaker.Draw](Cauldron2D.GameMaker.Draw.md): A running game's frame as a `Cauldron2D.DrawList`, in room pixels.
- [Cauldron2D.GameMaker.Event](Cauldron2D.GameMaker.Event.md): GameMaker's event types, and the names its compiler gives each event's code.
- [Cauldron2D.GameMaker.Font](Cauldron2D.GameMaker.Font.md): A font (a `FONT` entry): glyphs cut from one picture on a texture page.
- [Cauldron2D.GameMaker.General](Cauldron2D.GameMaker.General.md): The `GEN8` chunk: what the game is called, the window it opens, the order of its rooms,
and which generation of GameMaker built it.
- [Cauldron2D.GameMaker.Instance](Cauldron2D.GameMaker.Instance.md): One instance of an object in the running game, with GameMaker's built-in instance
variables under their GameMaker names, and the game's own variables in `vars`.
- [Cauldron2D.GameMaker.Object](Cauldron2D.GameMaker.Object.md): An object (an `OBJT` entry): the definition rooms place instances of.
- [Cauldron2D.GameMaker.Options](Cauldron2D.GameMaker.Options.md): The game's options (the `OPTN` chunk): window and display settings and the
constants the game was built with.
- [Cauldron2D.GameMaker.PartSystems](Cauldron2D.GameMaker.PartSystems.md): GameMaker's particle systems as its runtime runs them: systems that hold particles,
particle types that say how each particle starts, moves, changes and draws, and
emitters that set particles loose over a region. The functions are the game code's
`part_system_*`, `part_type_*`, `part_emitter_*` and `part_particles_create`, each
taking and giving the world; random draws come from the world's generator
(`Cauldron2D.GameMaker.Random`), in the runtime's order.
- [Cauldron2D.GameMaker.Particles](Cauldron2D.GameMaker.Particles.md): Particles, as GameMaker's `part_particles_create` makes them: pictures that code
sets loose, which move, animate and fade by themselves and are gone when their life
runs out. They are drawn with the room, at their depth, and cleared when a room is
entered.
- [Cauldron2D.GameMaker.Path](Cauldron2D.GameMaker.Path.md): A path (a `PATH` entry): `points`, each `{x, y, speed}` with speed a percentage of the
speed the path is followed at. `smooth` paths curve through their points `precision`
times between each pair; `closed` paths join their last point to their first.
- [Cauldron2D.GameMaker.Pictures](Cauldron2D.GameMaker.Pictures.md): The pictures of a game, cut from its decoded texture pages as `FrenchCurve.Raster`s.
- [Cauldron2D.GameMaker.Random](Cauldron2D.GameMaker.Random.md): GameMaker's random numbers: the runtime's WELL512a generator, seeded as
`random_set_seed` seeds it, giving what `random`, `random_range`, `irandom`,
`irandom_range` and `choose` give.
- [Cauldron2D.GameMaker.Region](Cauldron2D.GameMaker.Region.md): A picture's place on a texture page (a `TPAG` item).
- [Cauldron2D.GameMaker.Room](Cauldron2D.GameMaker.Room.md): A room (a `ROOM` entry): a level or screen of the game, `size` `{width, height}`
pixels, stepped `speed` times a second (GameMaker Studio 2 files set the game's
speed instead and leave this `0`).
- [Cauldron2D.GameMaker.Room.Backdrop](Cauldron2D.GameMaker.Room.Backdrop.md): One of a GameMaker Studio 1 room's eight backgrounds: background `background` drawn
at `{x, y}`, behind everything or, with `foreground`, in front. `tiled` is
`{across, down}`, repeating the picture across the room in each direction; `speed`
`{x, y}` moves it by that many pixels a step; `stretch` scales it to the room.
`background` is `-1` for an empty slot.

- [Cauldron2D.GameMaker.Room.Instance](Cauldron2D.GameMaker.Room.Instance.md): An instance a room places: object `object` at `{x, y}`, with the id the game's code
knows it by.
- [Cauldron2D.GameMaker.Room.Layer](Cauldron2D.GameMaker.Room.Layer.md): A layer of a GameMaker Studio 2 room. Layers draw in order of `depth`, greater first;
`offset` `{x, y}` shifts everything on the layer and `speed` `{x, y}` scrolls it by
that many pixels a step.
- [Cauldron2D.GameMaker.Room.Tile](Cauldron2D.GameMaker.Room.Tile.md): A tile placed on its own: the rectangle `source` `{x, y, width, height}` of
background (GameMaker Studio 1) or sprite (GameMaker Studio 2 asset layers) `picture`,
drawn at `{x, y}` scaled by `scale`, blended with `colour`. GameMaker Studio 1 tiles
order by `depth`, greater drawn first.

- [Cauldron2D.GameMaker.Room.View](Cauldron2D.GameMaker.Room.View.md): A room's view: the rectangle `view` `{x, y, width, height}` of the room shown in the
rectangle `port` `{x, y, width, height}` of the window. With `follow` set to an
object index, the view keeps that object's instance at least `border` `{x, y}` pixels
from its edges, moving at most `speed` `{x, y}` pixels a step, `-1` for no limit.

- [Cauldron2D.GameMaker.Rooms](Cauldron2D.GameMaker.Rooms.md): Leaving one room and entering another, in GameMaker's order
- [Cauldron2D.GameMaker.Script](Cauldron2D.GameMaker.Script.md): A script (a `SCPT` entry): a name and the code entry it runs, `nil` for none.
`constructor` marks a GameMaker 2.3 function declared as a constructor. A game
compiled to native code keeps a script's code in its executable as the function
`gml_Script_<name>`.

- [Cauldron2D.GameMaker.Shapes](Cauldron2D.GameMaker.Shapes.md): GameMaker's drawn shapes as pictures, in white, to be tinted by a draw list item's
`:blend` and `:alpha`.
- [Cauldron2D.GameMaker.Sound](Cauldron2D.GameMaker.Sound.md): A sound (a `SOND` entry).
- [Cauldron2D.GameMaker.Sprite](Cauldron2D.GameMaker.Sprite.md): A sprite (a `SPRT` entry): frames of a picture, the point it is drawn from, and the
masks it collides with.
- [Cauldron2D.GameMaker.Step](Cauldron2D.GameMaker.Step.md): One step of a running game, in GameMaker's order
- [Cauldron2D.GameMaker.Surfaces](Cauldron2D.GameMaker.Surfaces.md): Surfaces, as GameMaker's `surface_*` functions make them: rasters code draws onto,
kept in the world by id until freed, across rooms.
- [Cauldron2D.GameMaker.Text](Cauldron2D.GameMaker.Text.md): Text in one of a game's fonts, laid out as GameMaker's `draw_text` lays it out, as
draw list items naming `{:glyph, font, character}` pictures
(`Cauldron2D.GameMaker.Pictures.table/2`).
- [Cauldron2D.GameMaker.Texture](Cauldron2D.GameMaker.Texture.md): A texture page (a `TXTR` entry): one packed image that sprites, tilesets and fonts cut
their pictures from through `Cauldron2D.GameMaker.Region`.
- [Cauldron2D.GameMaker.TileLayers](Cauldron2D.GameMaker.TileLayers.md): A room's tile layers, each drawn as one picture.
- [Cauldron2D.GameMaker.Views](Cauldron2D.GameMaker.Views.md): GameMaker's built-in view following, run once a step after the end step events.
- [Cauldron2D.GameMaker.Wave](Cauldron2D.GameMaker.Wave.md): A stored sound in WAVE form (a RIFF file of PCM samples), as games keep their short
effects in the `AUDO` chunk.
- [Cauldron2D.GameMaker.World](Cauldron2D.GameMaker.World.md): A GameMaker game running: its data, its code, the room it is in and the instances in
that room, as one value.

## Mix Tasks

- [mix gamemaker.info](Mix.Tasks.Gamemaker.Info.md): Prints what a GameMaker data file holds: the game, the GameMaker generation that
built it, whether its code is bytecode or compiled into the executable, and its
resources.

