AMAL bank

An AMAL bank holds AMAL animation programs, movement recordings (recorded X/Y position deltas for the PLAY command), and an optional environment program.

Commands

# Export to JSON + .amal program files + movement JSON files
portamos disasm Amal.Abk output/amal.json

# Reassemble
portamos asm output/amal.json Amal.Abk

Output files

File Description
amal.json Bank metadata and file references
amal-program000.amal AMAL program source for slot 0
amal-movement000.json Movement recording for slot 0
amal-environment.amal Environment program (if present)

JSON schema

{
  "type": "Amal",
  "bankNumber": 1,
  "chipRam": false,
  "environment": "amal-environment.amal",
  "programCount": 3,
  "programs": [
    { "index": 0, "file": "amal-program000.amal" },
    { "index": 1, "file": "amal-program001.amal" }
  ],
  "movements": [
    {
      "index": 0,
      "name": "Walk",
      "file": "amal-movement000.json"
    }
  ]
}

Field reference

Top level

Field Type Description
type string Always "Amal"
bankNumber integer Bank slot (1-based)
chipRam boolean true = chip RAM, false = fast RAM
environment string or null Path to environment .amal file; null if not present
programCount integer Total number of program slots (including empty ones)

programs[]

Field Type Description
index integer Program slot number
file string Path to .amal source file relative to the JSON

movements[]

Field Type Description
index integer Movement slot number
name string Movement name
file string Path to movement .json file relative to the bank JSON

Movement file schema

Each movement is stored in its own JSON file:

{
  "name": "Walk",
  "xMove": {
    "speed": 1,
    "instructions": [
      { "type": "Delta", "pixels": 2 },
      { "type": "Wait", "ticks": 3 },
      { "type": "Delta", "pixels": -2 }
    ]
  },
  "yMove": {
    "speed": 1,
    "instructions": []
  }
}

Instruction types

type Fields Description
Delta pixels (integer) Move by this many pixels (positive = right/down, negative = left/up; range −63 to +63)
Wait ticks (integer, 1–127) Pause for this many 1/50-second intervals

Portamos is open-source software licensed under the Apache 2.0 License.

This site uses Just the Docs, a documentation theme for Jekyll.