Sashité for Developers
  1. Sashité for Developers
  2. Specifications
  3. PCN
  4. 1.0.0
  5. Examples
  6. Special Moves

Special Moves (PCN v1.0.0)

This page shows PAN operators used for non-standard actions. Each move is recorded as a tuple ["<PAN>", <seconds: float ≥ 0.0>].

Legality is style-dependent. PCN is rule-agnostic; engines/viewers validate PAN against the acting side’s SNN style.


1) Castling (~) — Chess

Kingside castling with time tuples; no time control shown (free play).

{
  "sides": {
    "first":  { "style": "CHESS" },
    "second": { "style": "chess" }
  },
  "setup": "+r2q+kbn+r/+p+p+p+p1+p+p+p/2n5/1Bb1p3/4P3/5N2/+P+P+P+P1+P+P+P/+RNBQ+K2+R / C/c",
  "moves": [
    ["e1~g1", 2.4]
  ]
}

Note: ~ encodes the special castling path (king + rook motion handled by the engine).


2) En Passant (~) — Chess

En passant is encoded with the special path operator.

{
  "setup": "+rnbq+kbn+r/+p+p+p1+p1+p+p/8/3pP-p2/8/8/+P+P+P+P1+P+P+P/+RNBQ+KBN+R / C/c",
  "moves": [
    ["e5~f6", 3.1]
  ]
}

Note: The ~ indicates the special capture path required for en passant.


3) Movement Capture (+) — Chess

Movement from origin to target with capture.

{
  "setup": "rnbqkb1r/pppp1ppp/5n2/4p3/2B1P3/5N2/PPPP1PPP/RNBQK2R 2P/p C/c",
  "moves": [
    ["c4+f7", 4.0],  // bishop from c4 captures on f7
    ["e8+f7", 5.5]   // king recaptures
  ]
}

4) Static Capture (+e5) — Chess

A static capture is written with target only.

{
  "setup": "8/8/8/4p3/8/8/8/8 / C/c",
  "moves": [
    ["+e5", 1.0]
  ]
}

When to use: some tools prefer static capture when the origin is uniquely determined or unneeded for the record.


5) Promotion (=) — Chess

5.1 Move with Promotion

{
  "setup": "4k3/P7/4K3/8/8/8/8/8 / C/c",
  "moves": [
    ["a7-a8=R", 2.2]
  ]
}

5.2 Underpromotion

{
  "setup": "4k3/P7/4K3/8/8/8/8/8 / C/c",
  "moves": [
    ["a7-a8=N", 4.8]
  ]
}

6) In-Place Transform (=) — General

An in-place piece transform (no displacement). Useful in variants that toggle states or piece types.

{
  "setup": "8/8/8/8/4P3/8/8/8 / C/c",
  "moves": [
    ["e4=+P", 0.7]
  ]
}

Note: The target piece code depends on the style’s piece set (e.g., +P for promoted pawn in shōgi-like systems).


7) Drops (*) — Shōgi

A drop from reserve to the board.

{
  "sides": {
    "first":  { "style": "SHOGI" },
    "second": { "style": "shogi" }
  },
  "setup": "lnsgkg1nl/1r5s1/pppppp1pp/6p2/9/2P6/PP1PPPPPP/7R1/LNSGKGSNL B/b S/s",
  "moves": [
    ["B*f5", 2.0]   // drop a bishop at f5
  ]
}

8) Mixed Special Sequence — Chess

A short line mixing special operators: castling, capture, promotion.

{
  "setup": "+r2q+kbn+r/+p+p+p+p1+p+p+p/2n5/1Bb1p3/4P3/5N2/+P+P+P+P1+P+P+P/+RNBQ+K2+R / C/c",
  "moves": [
    ["e1~g1", 1.9],     // castling
    ["c4+f7", 3.2],     // capture
    ["f7-f8=Q", 6.0]    // promotion on move
  ]
}

9) Pass (...) — General

A pass move; legality depends on the style/policy.

{
  "setup": "8/8/8/8/8/8/8/8 / U/u",
  "moves": [
    ["...", 0.0]
  ]
}

10) Enforcing Per-Move Cap (Byōyomi) in Special Moves

Special moves respect the same per-move cap if moves = 1.

{
  "sides": {
    "first":  { "style": "CHESS", "periods": [ { "time": 5, "moves": 1 } ] },
    "second": { "style": "chess", "periods": [ { "time": 5, "moves": 1 } ] }
  },
  "setup": "+r2q+kbn+r/+p+p+p+p1+p+p+p/2n5/1Bb1p3/4P3/5N2/+P+P+P+P1+P+P+P/+RNBQ+K2+R / C/c",
  "moves": [
    ["e1~g1", 3.0],  // ok (≤ 5.0)
    ["e7-e8=Q", 6.1] // violates per-move cap  status should be "time_limit" if enforced
  ],
  "status": "time_limit"
}

Tips & Reminders

For complete matches, see Complete Game Records. For timing semantics and transitions, visit Time Control Systems. For cross-variant scenarios, check Cross-Style Games.