<title>General Art Information | ENiGMA½ BBS Software</title>
<metaname="generator"content="Jekyll v4.2.1"/>
<metaproperty="og:title"content="General Art Information"/>
<metaproperty="og:locale"content="en_US"/>
<metaname="description"content="General Art Information One of the most basic elements of BBS customization is through it’s artwork. ENiGMA½ supports a variety of ways to select, display, and manage art."/>
<metaproperty="og:description"content="General Art Information One of the most basic elements of BBS customization is through it’s artwork. ENiGMA½ supports a variety of ways to select, display, and manage art."/>
{"description":"General Art Information One of the most basic elements of BBS customization is through it’s artwork. ENiGMA½ supports a variety of ways to select, display, and manage art.","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"url":"/enigma-bbs/art/general.html","@type":"BlogPosting","headline":"General Art Information","dateModified":"2023-08-27T23:32:21+00:00","datePublished":"2023-08-27T23:32:21+00:00","mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/art/general.html"},"@context":"https://schema.org"}</script>
<h1class="page-title">General Art Information</h1>
<h2id="general-art-information">General Art Information</h2>
<p>One of the most basic elements of BBS customization is through it’s artwork. ENiGMA½ supports a variety of ways to select, display, and manage art.</p>
<p>As a general rule, art files live in one of two places:</p>
<ol>
<li>The <codeclass="language-plaintext highlighter-rouge">art/general</code> directory. This is where you place common/non-themed art files.</li>
<li>Within a <em>theme</em> such as <codeclass="language-plaintext highlighter-rouge">art/themes/super_fancy_theme</code>.</li>
</ol>
<h3id="mci-codes">MCI Codes</h3>
<p>All art can contain <ahref="/enigma-bbs/art/mci.html">MCI Codes</a>.</p>
<h3id="art-in-menus">Art in Menus</h3>
<p>While art can be displayed programmatically such as from a custom module, the most basic and common form is via <codeclass="language-plaintext highlighter-rouge">menu.hjson</code> entries. This usually falls into one of two forms:</p>
<h4id="standard">Standard</h4>
<p>A “standard” entry where a single <codeclass="language-plaintext highlighter-rouge">art</code> spec is utilized:</p>
<pre><codeclass="language-hjson">{
mainMenu: {
art: main_menu.ans
}
}
</code></pre>
<h4id="module-specific--multiple-art">Module Specific / Multiple Art</h4>
<p>An entry for a custom module where multiple pieces are declared and used. The second style usually takes the form of a <codeclass="language-plaintext highlighter-rouge">config.art</code> block with two or more entries:</p>
<pre><codeclass="language-hjson">{
nodeMessage: {
config: {
art: {
header: node_msg_header
footer: node_msg_footer
}
}
}
}
</code></pre>
<p>A menu entry has a few elements that control how art is selected and displayed. First, the <codeclass="language-plaintext highlighter-rouge">art</code><em>spec</em> tells the system how to look for the art asset. Second, the <codeclass="language-plaintext highlighter-rouge">config</code> block can further control aspects of lookup and display. The following table describes such entries:</p>
<td>Sets the <ahref="http://syncterm.bbsdev.net/">SyncTERM</a> style font to use when displaying this art. If unset, the system will use the art’s embedded <ahref="http://www.acid.org/info/sauce/sauce.htm">SAUCE</a> record if present or simply use the current font. See Fonts below.</td>
<td>Set a <ahref="http://syncterm.bbsdev.net/">SyncTERM</a> style emulated baud rate when displaying this art. In other words, slow down the display.</td>
<td>An optional array of types (aka file extensions) to consider for lookup. For example : <codeclass="language-plaintext highlighter-rouge">[ '.ans', '.asc' ]</code>
<td>May be set to <codeclass="language-plaintext highlighter-rouge">false</code> if you need to explicitly disable SAUCE support.</td>
</tr>
</tbody>
</table>
<h4id="art-spec">Art Spec</h4>
<p>In the section above it is mentioned that the <codeclass="language-plaintext highlighter-rouge">art</code> member is a <em>spec</em>. The value of a <codeclass="language-plaintext highlighter-rouge">art</code> spec controls how the system looks for an asset. The following forms are supported:</p>
<ul>
<li>
<codeclass="language-plaintext highlighter-rouge">FOO</code>: The system will look for <codeclass="language-plaintext highlighter-rouge">FOO.ANS</code>, <codeclass="language-plaintext highlighter-rouge">FOO.ASC</code>, <codeclass="language-plaintext highlighter-rouge">FOO.TXT</code>, etc. using the default search path. Unless otherwise specified if <codeclass="language-plaintext highlighter-rouge">FOO1.ANS</code>, <codeclass="language-plaintext highlighter-rouge">FOO2.ANS</code>, and so on exist, a random selection will be made.</li>
<li>
<codeclass="language-plaintext highlighter-rouge">FOO.ANS</code>: By specifying an extension, only the exact match will be searched for.</li>
<li>
<codeclass="language-plaintext highlighter-rouge">rel/path/to/BAR.ANS</code>: Only match a path (relative to the system’s <codeclass="language-plaintext highlighter-rouge">art</code> directory).</li>
<p>The <ahref="/enigma-bbs/configuration/acs.html">ACS</a> system can be used to make conditional art selection choices. To do this, provide an array of possible values in your art spec. As an example:</p>
<p>ENiGMA½ can set a <ahref="http://syncterm.bbsdev.net/">SyncTERM</a> style font for art display. This is supported by many other popular BBS terminals as well. A common usage is for displaying Amiga style fonts for example. The system will use the <codeclass="language-plaintext highlighter-rouge">font</code> specifier or look for a font declared in an artworks SAUCE record (unless <codeclass="language-plaintext highlighter-rouge">readSauce</code> is <codeclass="language-plaintext highlighter-rouge">false</code>).</p>
<p>The most common fonts are probably as follows:</p>
<p><imgclass="emoji"title=":information_source:"alt=":information_source:"src="https://github.githubassets.com/images/icons/emoji/unicode/2139.png"height="20"width="20"> See <ahref="https://github.com/protomouse/synchronet/blob/master/src/conio/cterm.txt">this specification</a> for more information.</p>
<p>The <codeclass="language-plaintext highlighter-rouge">baudRate</code> member can set a <ahref="http://syncterm.bbsdev.net/">SyncTERM</a> style emulated baud rate. May be <codeclass="language-plaintext highlighter-rouge">300</code>, <codeclass="language-plaintext highlighter-rouge">600</code>, <codeclass="language-plaintext highlighter-rouge">1200</code>, <codeclass="language-plaintext highlighter-rouge">2400</code>, <codeclass="language-plaintext highlighter-rouge">4800</code>, <codeclass="language-plaintext highlighter-rouge">9600</code>, <codeclass="language-plaintext highlighter-rouge">19200</code>, <codeclass="language-plaintext highlighter-rouge">38400</code>, <codeclass="language-plaintext highlighter-rouge">57600</code>, <codeclass="language-plaintext highlighter-rouge">76800</code>, or <codeclass="language-plaintext highlighter-rouge">115200</code>. A value of <codeclass="language-plaintext highlighter-rouge">ulimited</code>, <codeclass="language-plaintext highlighter-rouge">off</code>, or <codeclass="language-plaintext highlighter-rouge">0</code> resets (disables) the rate.</p>
<p><imgclass="emoji"title=":information_source:"alt=":information_source:"src="https://github.githubassets.com/images/icons/emoji/unicode/2139.png"height="20"width="20"> See <ahref="https://github.com/protomouse/synchronet/blob/master/src/conio/cterm.txt">this specification</a> for more information.</p>