// war/assets.ne — the one big Tileset sprite block. // // Every custom 8×8 CHR tile in the game is stacked vertically inside // a single `sprite Tileset { pixels: [...] }` declaration. Stacking // them 1-tile-wide × N-tiles-tall means the parser splits each tile // into consecutive tile indices in reading order, so tile index N in // a `draw Tileset frame: N` call picks the N'th 8×8 block. // // Every constant in constants.ne points at a position in this list. // If you add or remove a tile, update BOTH this file AND the matching // constant range. // // The colour vocabulary (per the palette declaration in war.ne): // // . transparent // 1 red (palette index 1 — hearts, diamonds, accents) // 2 white (palette index 2 — card body, letters) // 3 black (palette index 3 — outlines, spades, clubs, text) // // All tiles below use this 4-colour alphabet. Red is only used for // red suits; black is used for text, outlines, and black suits. sprite Tileset { pixels: [ // ── 01: card frame top-left corner ─────────────── // Rounded top-left corner of a card body. Black outline // two pixels thick on the exterior, white interior so // rank glyphs drawn with black pixels read cleanly on // top. The interior corner is pure white so the rank // tile (drawn next to it) overpaints naturally. "..333333", ".3222222", ".3222222", "3222....", "3222....", "3222....", "3222....", "3222....", // ── 02: card frame top-right corner ────────────── "333333..", "2222223.", "2222223.", "....2223", "....2223", "....2223", "....2223", "....2223", // ── 03: card frame bottom-left corner ──────────── "3222....", "3222....", "3222....", "3222....", "3222....", ".3222222", ".3222222", "..333333", // ── 04: card frame bottom-right corner ─────────── "....2223", "....2223", "....2223", "....2223", "....2223", "2222223.", "2222223.", "333333..", // ── 05: card frame blank cell — left half ──────── // Pure white interior with a left black edge (for the // card's left border). Used for the blank middle / // bottom of any card face that doesn't carry art. "32222222", "32222222", "32222222", "32222222", "32222222", "32222222", "32222222", "32222222", // ── 06: card frame blank cell — right half ─────── "22222223", "22222223", "22222223", "22222223", "22222223", "22222223", "22222223", "22222223", // ── 07: card back top-left ─────────────────────── // The back is a black-and-white diamond lattice, // painted as a 2×2 repeating block. Every card back // uses all four corners tiled into a 16×16 / 16×24 // block. "..333333", ".3333333", ".3322333", "333.2.33", "33.222.3", "33.2.233", "3322.333", "3333.333", // ── 08: card back top-right ────────────────────── "333333..", "3333333.", "33322.33", "33.2.333", "3.222.33", "33.2.333", "333.2233", "3333.333", // ── 09: card back bottom-left ──────────────────── "3333.333", "3322.333", "33.2.233", "33.222.3", "333.2.33", ".3322333", ".3333333", "..333333", // ── 10: card back bottom-right ─────────────────── "3333.333", "333.2233", "33.2.333", "3.222.33", "33.2.333", "33322.33", "3333333.", "333333..", // ── 11: rank A (Ace) ───────────────────────────── // Bold black glyph on a white card body. The rank is // drawn 6×6 px and centred horizontally in the 8×8 tile. // The card body fills index 2 (white) so the glyph reads // as black-on-white when the card frame's outline tiles // wrap it. "22222222", "22.33.22", "2.3333.2", "2.3..3.2", "2.3333.2", "2.3..3.2", "2.3..3.2", "22222222", // ── 12: rank 2 ─────────────────────────────────── "22222222", "2.3333.2", "2....3.2", "22.33.22", "2.3...22", "2.3...22", "2.3333.2", "22222222", // ── 13: rank 3 ─────────────────────────────────── "22222222", "2.3333.2", "22...3.2", "22.33.22", "22...3.2", "2....3.2", "2.3333.2", "22222222", // ── 14: rank 4 ─────────────────────────────────── "22222222", "2.3..3.2", "2.3..3.2", "2.3..3.2", "2.3333.2", "22...3.2", "22...3.2", "22222222", // ── 15: rank 5 ─────────────────────────────────── "22222222", "2.3333.2", "2.3...22", "2.3333.2", "22...3.2", "22...3.2", "2.3333.2", "22222222", // ── 16: rank 6 ─────────────────────────────────── "22222222", "2.3333.2", "2.3...22", "2.3333.2", "2.3..3.2", "2.3..3.2", "2.3333.2", "22222222", // ── 17: rank 7 ─────────────────────────────────── "22222222", "2.3333.2", "22...3.2", "22..3.22", "22.3..22", "22.3..22", "22.3..22", "22222222", // ── 18: rank 8 ─────────────────────────────────── "22222222", "2.3333.2", "2.3..3.2", "2.3333.2", "2.3..3.2", "2.3..3.2", "2.3333.2", "22222222", // ── 19: rank 9 ─────────────────────────────────── "22222222", "2.3333.2", "2.3..3.2", "2.3..3.2", "2.3333.2", "22...3.2", "2.3333.2", "22222222", // ── 20: rank 10 (condensed "1" + "0") ───────────── // "10" squeezed into an 8x8 tile. The "1" takes columns // 0-1, a gap, the "0" takes columns 4-7. "22222222", "2.3.33.2", "233.3..3", "2.3.3..3", "2.3.3..3", "2.3.3..3", "2.3.33.2", "22222222", // ── 21: rank J ─────────────────────────────────── "22222222", "222.33.2", "222..3.2", "222..3.2", "222..3.2", "22.3.3.2", "22.333.2", "22222222", // ── 22: rank Q ─────────────────────────────────── "22222222", "2.3333.2", "2.3..3.2", "2.3..3.2", "2.3.33.2", "2.3333.2", "22.33.32", "22222222", // ── 23: rank K ─────────────────────────────────── "22222222", "2.3..3.2", "2.3.3.22", "2.33..22", "2.3.3.22", "2.3..3.2", "2.3..3.2", "22222222", // ── 24: small spade ♠ ──────────────────────────── // 6x6 centred pip on a white 8x8 tile. "22222222", "2222.222", "222.3.22", "22.333.2", "2.33333.", "2.33333.", "222.3.22", "222333.2", // ── 25: small heart ♥ ──────────────────────────── // Red pip on white. "22222222", "22.11.22", "2.1111.2", "2.1111.2", "2.1111.2", "22.11.22", "222.1.22", "22222222", // ── 26: small diamond ♦ ────────────────────────── "22222222", "22221222", "2221.122", "221...12", "221...12", "2221.122", "22221222", "22222222", // ── 27: small club ♣ ───────────────────────────── "22222222", "2222.222", "2223332.", "2223332.", "22.333.2", "2.33333.", "22.3.3.2", "222333.2", // ── 28: big spade — left half ──────────────────── // The big centre-pip is drawn 16×8: two tiles side by // side. Each suit's (left half, right half) pair is // authored explicitly so the centre art can be bolder // and more symmetric than the corner pips. "2222222.", "222222.3", "22222.33", "2222.333", "222.3333", "22.33333", "2.333333", ".3333333", // ── 29: big heart — left half ──────────────────── "2222.111", "222.1111", "22.11111", "22.11111", "22.11111", "222.1111", "2222.111", "22222.11", // ── 30: big diamond — left half ────────────────── "22222222", "22222.12", "2222.112", "222.1112", "22.11112", "2.111112", "22.11112", "222.1112", // ── 31: big club — left half ───────────────────── "2222.333", "2222.333", "222.3333", "22.33333", "2.333333", "2.333333", "22.333.3", "2223.333", // ── 32: big spade — right half ─────────────────── ".3333333", "2.333333", "22.33333", "222.3333", "2222.333", "22222.33", "222222.3", "2222222.", // ── 33: big heart — right half ─────────────────── "111.2222", "1111.222", "11111.22", "11111.22", "11111.22", "1111.222", "111.2222", "11.22222", // ── 34: big diamond — right half ───────────────── "22222222", "21.22222", "211.2222", "2111.222", "21111.22", "211111.2", "21111.22", "2111.222", // ── 35: big club — right half ──────────────────── "333.2222", "333.2222", "3333.222", "33333.22", "333333.2", "333333.2", "3.333.22", "333.3222", // ── 36-61: alphabet A..Z (8x8, white on transparent) ─ // Bold sans-serif letters drawn with 2-pixel strokes so // they still read over the felt at NES resolution. Every // letter uses palette index 2 (white) on a transparent // background. Letters are 6 wide, centred horizontally // in the 8-wide tile with a 1-pixel top/bottom margin. // A "........", "..2222..", ".22..22.", ".22..22.", ".222222.", ".22..22.", ".22..22.", "........", // B "........", ".22222..", ".22..22.", ".22222..", ".22..22.", ".22..22.", ".22222..", "........", // C "........", "..22222.", ".22..22.", ".22.....", ".22.....", ".22..22.", "..22222.", "........", // D "........", ".2222...", ".22.22..", ".22..22.", ".22..22.", ".22.22..", ".2222...", "........", // E "........", ".222222.", ".22.....", ".22222..", ".22.....", ".22.....", ".222222.", "........", // F "........", ".222222.", ".22.....", ".22222..", ".22.....", ".22.....", ".22.....", "........", // G "........", "..22222.", ".22.....", ".22.222.", ".22..22.", ".22..22.", "..2222..", "........", // H "........", ".22..22.", ".22..22.", ".222222.", ".22..22.", ".22..22.", ".22..22.", "........", // I "........", "..2222..", "...22...", "...22...", "...22...", "...22...", "..2222..", "........", // J "........", "....222.", ".....22.", ".....22.", ".....22.", ".22..22.", "..2222..", "........", // K "........", ".22..22.", ".22.22..", ".2222...", ".22.22..", ".22..22.", ".22..22.", "........", // L "........", ".22.....", ".22.....", ".22.....", ".22.....", ".22.....", ".222222.", "........", // M "........", ".22..22.", ".222222.", ".222222.", ".22..22.", ".22..22.", ".22..22.", "........", // N "........", ".22..22.", ".222.22.", ".222222.", ".22.222.", ".22..22.", ".22..22.", "........", // O "........", "..2222..", ".22..22.", ".22..22.", ".22..22.", ".22..22.", "..2222..", "........", // P "........", ".22222..", ".22..22.", ".22..22.", ".22222..", ".22.....", ".22.....", "........", // Q "........", "..2222..", ".22..22.", ".22..22.", ".22.222.", ".22.22..", "..222.2.", "........", // R "........", ".22222..", ".22..22.", ".22..22.", ".22222..", ".22.22..", ".22..22.", "........", // S "........", "..22222.", ".22.....", "..2222..", ".....22.", ".....22.", ".22222..", "........", // T "........", ".222222.", "...22...", "...22...", "...22...", "...22...", "...22...", "........", // U "........", ".22..22.", ".22..22.", ".22..22.", ".22..22.", ".22..22.", "..2222..", "........", // V "........", ".22..22.", ".22..22.", ".22..22.", ".22..22.", "..2222..", "...22...", "........", // W "........", ".22..22.", ".22..22.", ".22..22.", ".222222.", ".222222.", ".22..22.", "........", // X "........", ".22..22.", "..2222..", "...22...", "...22...", "..2222..", ".22..22.", "........", // Y "........", ".22..22.", ".22..22.", "..2222..", "...22...", "...22...", "...22...", "........", // Z "........", ".222222.", ".....22.", "....22..", "...22...", "..22....", ".222222.", "........", // ── 62-71: digits 0..9 (bold) ────────────────── // 0 "........", "..2222..", ".22..22.", ".22..22.", ".22..22.", ".22..22.", "..2222..", "........", // 1 "........", "...22...", "..222...", ".2.22...", "...22...", "...22...", "..2222..", "........", // 2 "........", "..2222..", ".22..22.", ".....22.", "....22..", "..22....", ".222222.", "........", // 3 "........", "..2222..", ".22..22.", "....22..", ".....22.", ".22..22.", "..2222..", "........", // 4 "........", "....22..", "...222..", "..2.22..", ".22.22..", ".222222.", "....22..", "........", // 5 "........", ".222222.", ".22.....", ".22222..", ".....22.", ".22..22.", "..2222..", "........", // 6 "........", "..2222..", ".22.....", ".22222..", ".22..22.", ".22..22.", "..2222..", "........", // 7 "........", ".222222.", ".....22.", "....22..", "...22...", "..22....", "..22....", "........", // 8 "........", "..2222..", ".22..22.", "..2222..", ".22..22.", ".22..22.", "..2222..", "........", // 9 "........", "..2222..", ".22..22.", ".22..22.", "..22222.", ".....22.", "..2222..", "........", // ── 72: cursor (▶) ──────────────────────────── "........", "..2.....", "..22....", "..222...", "..222...", "..22....", "..2.....", "........", // ── 73: tiny heart (victory marker) ─────────── "........", ".11..11.", "11111111", "11111111", ".111111.", "..1111..", "...11...", "........", // ── 74: single dot (stack marker / spacer) ──── "........", "...22...", "..2222..", "..2222..", "..2222..", "..2222..", "...22...", "........", // ── 75: felt background fill ───────────────── // Subtle cross-hatch on the felt. When the background // layer renders this tile through bg sub-palette 0 // (universal dk_green + forest/green/mint), index 0 // becomes dk_green and index 3 becomes mint — so the // tile shows as dk_green felt with sparse mint flecks. // The same CHR rendered as a sprite would show as // transparent + black, which we never do. "........", "....3...", "........", "..3.....", "........", "......3.", "........", "...3....", // ── 76-87: BIG WAR title letters ───────────── // Each letter is 16×16 = a 2x2 block of tiles. The // letters are designed bold and chunky so the title // reads from across the room. Each tile draws a // quadrant of the letter using palette index 2 (white // when rendered via sp0, white when rendered via the // bg cream sub-palette). // // 76: BIG W top-left "22....22", "22....22", "22....22", "22....22", "22....22", "22....22", "22....22", "22....22", // 77: BIG W top-right "22....22", "22....22", "22....22", "22....22", "22....22", "22....22", "22....22", "22....22", // 78: BIG W bottom-left "22....22", "22....22", "22.22.22", "22.22.22", "22.22.22", "2222.222", "2222.222", ".22..22.", // 79: BIG W bottom-right "22....22", "22....22", "22.22.22", "22.22.22", "22.22.22", "222.2222", "222.2222", ".22..22.", // 80: BIG A top-left "....2222", "...22222", "..222222", ".2222.22", "2222..22", "2222..22", "222....2", "222....2", // 81: BIG A top-right "2222....", "22222...", "222222..", "22.2222.", "22..2222", "22..2222", "2....222", "2....222", // 82: BIG A bottom-left "22222222", "22222222", "22222222", "222....2", "222....2", "222....2", "222....2", "222....2", // 83: BIG A bottom-right "22222222", "22222222", "22222222", "2....222", "2....222", "2....222", "2....222", "2....222", // 84: BIG R top-left "22222222", "22222222", "222....2", "222....2", "222....2", "222....2", "22222222", "22222222", // 85: BIG R top-right "2222....", "22222...", "..222...", "..222...", "..222...", "..2222..", ".22222..", "22222...", // 86: BIG R bottom-left "22222222", "22222222", "222.2222", "222..222", "222...22", "222...22", "222....2", "222....2", // 87: BIG R bottom-right "22......", "222.....", "2222....", "22222...", "222222..", "2222222.", "22222222", ".2222222" ] }