pxart help CHECKING

Checking

CHECKING
  check FILE|DIR... [--palette P] [--size WxH] [--max-colors N] [--strict] [-v] [--exclude GLOB]
      Every format error with a code and location, then size / off-palette colors / color budget /
      unused keys / see-through px. One line per file: 'ok   party.px: 40 frames, 32x32, 16x16,
      3-14c', or 'FAIL party.px: 2 of 40 frames fail' and a line for each of those frames (a file
      of one frame gets that frame's line); -v prints a line for every frame, as
      'ok   party.px:walk/down/0: 32x32 9c'. Notes follow their file's line, and checking more than
      one file ends with a summary: '6 files, 150 frames, 3 warnings' (', 1 failed' when one did;
      a warning is a note line). A directory checks every .px and .map under it, recursively,
      sorted by path; a palette file (no frames) is checked as one: 'ok   palette.px: palette file,
      17 key(s), variants night'. P is a .px, .gpl, .hex, or text of #rrggbb. --strict also
      rejects unknown @sections and @anim/@still lines whose group has no frames (else a note).
      Exit 1 on any failure. --exclude GLOB leaves files out, as for sheet.
      A .map (scene --map) is checked too: every row char has a legend line and every legend
      entry loads as one frame; .world, .tmj: help worlds.
      Non-ASCII chars that look like ASCII (Cyrillic/Greek 'а е о р с х у', fullwidth 'k') get
      a note naming the line, row and column and the letter they pass for.
  stats FILE|DIR... [--colors] [--at x,y] [--exclude GLOB] [--variant V]
      Size, bbox ('x 1..22, y 0..20': ends included), colors (a directory, palette files and
      --exclude as for sheet).
      FILE:SEL%VARIANT reads the colors a variant renders (--variant V: every FILE's): 'stats
      hero.px:idle/0%night'. --colors lists each frame's rendered colors, most pixels first,
      each with its pixel count and the keys that draw it ('#120e22 40 px (k)'). --at x,y
      (repeatable) prints that pixel's key and its color in the base palette and in every
      variant ('at 3,4: key k; base #3f2631, night #120e22'), or only in the one named.
  diff A B [--variant V] [--strict-alpha] [--exclude GLOB] [-o DIFF.png|DIR [--scale N]]
       [--labels CSV [--label-col C] [--file-col C]]
      Compare renders pixel by pixel, one line per pair ('same: 16x16, every pixel', or what
      differs: '12 px differ in 3,4,6,6 (x,y,w,h)', 'sizes 16x16 and 16x24') and for several a
      count ('132 frame(s): 130 same, 1 differ, 1 unpaired'). It exits 1 when anything differs
      or has no pair, as check does.
      A and B are:
        two files, FILE[:SEL][%VARIANT] or PNGs: one frame each, or frames paired by id (in
          order when their ids differ but their counts match: diff wick.px:walk
          party.px:wick/walk, copies made with --prefix wick/);
        a file and a directory of PNGs: each frame against DIR/<id>.png, as export --frames
          writes them, or with --labels CSV against the PNG whose row names it so: 'diff
          town.px pack/ --labels pack/labels.csv' proves a port lossless in one call;
        a directory of .px files and one of PNGs: every frame of every .px, as above ('diff
          town/ pack/ --labels pack/labels.csv'; an id two files share is E_BAD_ARG; a note
          counts the PNGs left over);
        two other directories: the .png and .px files under them paired by path (with
          --labels, a PNG goes by its row's name), a .px pair frame by frame.
      A frame with no PNG, or a file only one side has, is unpaired. --exclude GLOB leaves
      a directory's files out, as for check.
      Transparency: a pixel whose alpha is 0 matches any other whose alpha is 0, whatever
      its rgb; any other pixel compares on all four channels. --strict-alpha compares all
      four everywhere. --variant V renders both sides with V, and a side's own %VARIANT
      wins. -o DIFF.png draws A, B and the differing pixels in magenta side by side
      (top-left aligned) of the one pair that differs; -o DIR gets one per pair that differs.
      A render or scaled copy of a frame gets a note naming render --plain.
  frames FILE[:SEL] [--rm [ID...]] [--move ID --after|--before ID] [--rename GROUP NEWGROUP]
         [--copy-to DST [ID...] [--rekey [KEYS]] [--variant-map NAME=V1,V2]
          [--prefix P | --rename GROUP NEWGROUP]]
      List frames, sizes, durations (only for animation frames; 'still' for @still groups
      and every frame under '@still *') and animations; or delete / reorder frames (prints
      what it removed or moved, not the listing; a move to where the frames already are
      prints "already in place" and writes nothing). FILE:SEL lists only those frames; 'frames
      hero.px:walk/left --rm' removes them (ids after --rm are frame ids, in SEL), and 'frames
      hero.px:walk/left --after idle/3' moves them there as a block, in order. --move ID
      takes a plain FILE and one frame id (a group moves with FILE:GROUP --after ID).
      Removing a group's last frame removes its @anim and @still lines too. A move puts the
      @anim lines in the order of their groups' first frames (with their comments; lines of
      groups with no frames after), so the file reads in play order, and says so.
      --copy-to DST copies FILE's frames (FILE:SEL's, or the ids after DST) into the existing
      DST as they play in FILE: each frame's ms and pivot (on its @frame line when DST's @anim
      would change them), the @anim line of a group DST lacks, and @still. They keep FILE's
      order and land after their group's last frame in DST, at the end for a new group, or
      at --after/--before a DST frame: 'frames hero.px:walk --copy-to beast.px --after idle/3'.
      Their keys join DST's palette and variants as compose's layers join an existing OUT
      (see compose): E_KEY_CONFLICT, the variant WARNINGs, --rekey [KEYS] and --variant-map
      dusk=night work alike. A frame id DST already has is E_DUP_FRAME, and so are two
      copies --rename would give one id (--rename walk w --rename run w).
      DST must exist: 'extract FILE:SEL -o DST' starts one with FILE's palette, and 'new DST
      --empty --palette P.px' one with no frames that imports P.
      Copies under other ids, when DST has those already (two packs' walk/*): --prefix wick/
      puts wick/ in front of every copy's id ('frames wick.px:walk --copy-to party.px --prefix
      wick/' writes wick/walk/down/0 and '@anim wick/walk/down'), and --rename walk wick/walk
      renames only the group (or frame) it names; FILE stays as it is. --rename repeats.
      --rename GROUP NEWGROUP without --copy-to renames in FILE itself: GROUP's frames (walk/0,
      walk/1, or the frame GROUP) become NEWGROUP's (wick/walk/0, ...), and the @anim and
      @still lines of GROUP and the groups under it follow, with their comments. A NEWGROUP
      FILE already has is E_DUP_FRAME.
This page is built from site/src/data/reference.json in the repository.Edit on GitHub