← Files ModRetro Chromatic PluginARCHIVED FILE

examples/original-art/recipes.mjs

8.16 KB · Oct 5, 2026 · 18:37 UTC

↓ Download file

// Original whole-cell artwork for the Chromatic starter, authored 2026-09-24.
// No upstream bitmap is read or transformed. Glyphs A,E,G,I,L,N,O,P,R,S,T
// reuse the original in-repository dogfood-assets.mjs glyph definitions from
// 5929961b938260ad112b87fc57145b7b23c7a196. Other glyph rows are authored here.
export const bgPalette={0:[7,24,33,255],1:[48,104,80,255],2:[134,192,108,255],3:[224,248,207,255]};
export const spritePalette={'.':[101,255,0,255],0:bgPalette[0],1:bgPalette[2],2:bgPalette[3]};
export const tiles={
  '0':['22222222','22222222','22222222','22222222','22222222','22222222','22222222','22222222'],
  '1':['12222222','22222222','22222222','22222222','22222222','22222222','22222222','22222222'],
  '2':['00000000','12222221','12333321','12222221','12222221','12222221','11111111','22222222'],
  '3':['00000000','11111111','22222222','22222222','22222222','22222222','11111111','33333333'],
  '4':['01222222','01222222','01222222','01222222','01222222','01222222','01222222','01222222'],
  '5':['22222210','22222210','22222210','22222210','22222210','22222210','22222210','22222210'],
  '6':['22222222','33333333','11111111','00000000','11111111','11111111','11111111','00000000'],
  '7':['00000000','03333330','03111330','03113330','03133330','03333330','03333330','00000000'],
  '8':['00000000','03333330','03331130','03311130','03111330','03333330','03333330','00000000'],
  '9':['11111111','12222221','12202221','12000221','12202221','12222221','00000000','11111111'],
  'a':['11111111','12222221','12022021','12022021','12000021','12222221','00000000','11111111'],
  'b':['11111111','12222221','12200221','12200221','12200221','12222221','00000000','11111111'],
  'c':['22222222','21111112','21333312','21111112','21333312','21111112','22222222','22222222'],
  'd':['22222222','22222222','22222222','22222222','22222222','22222222','22221111','22221333'],
  'e':['22222222','22222222','22222222','22222222','22222222','22222222','11112222','33312222'],
  'f':['00000000','01111110','01222210','01222210','01222210','01222210','01111110','00000000'],
};
// Twenty by eighteen, all visual walls occupy the outer ring or the top 3 rows.
export const tilemap=[
 'f222222222222222222f','42cc22222cc222222225','429ab000000007878005',
 '43333333333333333335','40000100001000010005','40000000000000000005',
 '40000000000000000005','41000010000100001005','40000000000000000005',
 '40000000000000000005','40001000010000100005','40000000000000000005',
 '40000000000000000005','41000010000100001005','40000000000000000005',
 '400000000de000000005','40000100001000010005','f666666666666666666f'
];
export const player={
 down:[
  '................','.....000000.....','....01222210....','...0122222210...',
  '...0120000210...','...0120220210...','...0120000210...','....01111110....',
  '.....000000.....','....01211210....','...0121221210...','...0101221010...',
  '....01100110....','....010..010....','...0010..0100...','...0000..0000...'
 ],
 up:[
  '................','.....000000.....','....01222210....','...0122222210...',
  '...0121111210...','...0120000210...','...0121111210...','....01111110....',
  '.....000000.....','....01111110....','...0121001210...','...0101221010...',
  '....01100110....','....010..010....','...0010..0100...','...0000..0000...'
 ],
 right:[
  '................','.....000000.....','....01222210....','...0122222210...',
  '...0121102220...','...0120000220...','...0121102220...','....01111110....',
  '.....000000.....','....01111210....','...0121012210...','...0101212010...',
  '....01100110....','....010..010....','...0010..0100...','...0000..0000...'
 ]
};
export const glyphs={
 ' ':['00000','00000','00000','00000','00000','00000','00000'],
 A:['01110','10001','10001','11111','10001','10001','10001'],
 B:['11110','10001','10001','11110','10001','10001','11110'],
 C:['01111','10000','10000','10000','10000','10000','01111'],
 D:['11110','10001','10001','10001','10001','10001','11110'],
 E:['11111','10000','10000','11110','10000','10000','11111'],
 F:['11111','10000','10000','11110','10000','10000','10000'],
 G:['01111','10000','10000','10111','10001','10001','01110'],
 H:['10001','10001','10001','11111','10001','10001','10001'],
 I:['11111','00100','00100','00100','00100','00100','11111'],
 J:['00111','00010','00010','00010','10010','10010','01100'],
 K:['10001','10010','10100','11000','10100','10010','10001'],
 L:['10000','10000','10000','10000','10000','10000','11111'],
 M:['10001','11011','10101','10101','10001','10001','10001'],
 N:['10001','11001','10101','10011','10001','10001','10001'],
 O:['01110','10001','10001','10001','10001','10001','01110'],
 P:['11110','10001','10001','11110','10000','10000','10000'],
 Q:['01110','10001','10001','10001','10101','10010','01101'],
 R:['11110','10001','10001','11110','10100','10010','10001'],
 S:['01111','10000','10000','01110','00001','00001','11110'],
 T:['11111','00100','00100','00100','00100','00100','00100'],
 U:['10001','10001','10001','10001','10001','10001','01110'],
 V:['10001','10001','10001','10001','10001','01010','00100'],
 W:['10001','10001','10001','10101','10101','11011','10001'],
 X:['10001','10001','01010','00100','01010','10001','10001'],
 Y:['10001','10001','01010','00100','00100','00100','00100'],
 Z:['11111','00001','00010','00100','01000','10000','11111'],
 '0':['01110','10001','10011','10101','11001','10001','01110'],
 '1':['00100','01100','00100','00100','00100','00100','01110'],
 '2':['01110','10001','00001','00010','00100','01000','11111'],
 '3':['11110','00001','00001','01110','00001','00001','11110'],
 '4':['00010','00110','01010','10010','11111','00010','00010'],
 '5':['11111','10000','10000','11110','00001','00001','11110'],
 '6':['01110','10000','10000','11110','10001','10001','01110'],
 '7':['11111','00001','00010','00100','01000','01000','01000'],
 '8':['01110','10001','10001','01110','10001','10001','01110'],
 '9':['01110','10001','10001','01111','00001','00001','01110'],
 '!':['00100','00100','00100','00100','00100','00000','00100'],
 '"':['01010','01010','01010','00000','00000','00000','00000'],
 '#':['01010','11111','01010','01010','11111','01010','00000'],
 '$':['00100','01111','10100','01110','00101','11110','00100'],
 '%':['11001','11010','00010','00100','01000','01011','10011'],
 '&':['01100','10010','10100','01000','10101','10010','01101'],
 "'":['00100','00100','01000','00000','00000','00000','00000'],
 '(':['00010','00100','01000','01000','01000','00100','00010'],
 ')':['01000','00100','00010','00010','00010','00100','01000'],
 '*':['00000','10101','01110','11111','01110','10101','00000'],
 '+':['00000','00100','00100','11111','00100','00100','00000'],
 ',':['00000','00000','00000','00000','00100','00100','01000'],
 '-':['00000','00000','00000','11111','00000','00000','00000'],
 '.':['00000','00000','00000','00000','00000','00110','00110'],
 '/':['00001','00010','00010','00100','01000','01000','10000'],
 ':':['00000','00110','00110','00000','00110','00110','00000'],
 ';':['00000','00110','00110','00000','00100','00100','01000'],
 '<':['00001','00010','00100','01000','00100','00010','00001'],
 '=':['00000','00000','11111','00000','11111','00000','00000'],
 '>':['10000','01000','00100','00010','00100','01000','10000'],
 '?':['01110','10001','00001','00010','00100','00000','00100'],
 '@':['01110','10001','10111','10101','10111','10000','01111'],
 '[':['01110','01000','01000','01000','01000','01000','01110'],
 '\\':['10000','01000','01000','00100','00010','00010','00001'],
 ']':['01110','00010','00010','00010','00010','00010','01110'],
 '^':['00100','01010','10001','00000','00000','00000','00000'],
 '_':['00000','00000','00000','00000','00000','00000','11111'],
 '`':['01000','00100','00010','00000','00000','00000','00000'],
 '{':['00010','00100','00100','01000','00100','00100','00010'],
 '|':['00100','00100','00100','00100','00100','00100','00100'],
 '}':['01000','00100','00100','00010','00100','00100','01000'],
 '~':['00000','00000','01001','10110','00000','00000','00000']
};
// This intentionally small caps face gives lowercase ASCII the corresponding
// uppercase cell. It covers every printable ASCII code without platform art.
export const glyphFor=ch=>glyphs[ch]||glyphs[ch.toUpperCase()]||glyphs['?'];
export const cursor=[
 '33333333','33033333','33003333','33020333',
 '33022033','33020333','33003333','33033333'
];

SHA-256: 94c792a276434db59f02e30c4d967e673600e2343fba75f3858f31fd18aa1ca3