<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"><channel><atom:link rel="hub" href="http://tumblr.superfeedr.com/" xmlns:atom="http://www.w3.org/2005/Atom"/><description>mnml vga dweomerkrafters mark beasley and tamas kemenczy. 

# source code.</description><title>⌁</title><generator>Tumblr (3.0; @arcanebolt)</generator><link>http://arcanebolt.net/</link><item><title>(via screengrab)</title><description>&lt;img src="http://30.media.tumblr.com/tumblr_ks0z6tNZHJ1qzm1v6o1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;(via &lt;a href="http://screengrab.tumblr.com/"&gt;screengrab&lt;/a&gt;)&lt;/p&gt;</description><link>http://arcanebolt.net/post/221884860</link><guid>http://arcanebolt.net/post/221884860</guid><pubDate>Sat, 24 Oct 2009 10:48:41 -0500</pubDate></item><item><title>(via screengrab)</title><description>&lt;img src="http://24.media.tumblr.com/tumblr_ks0zcpidta1qzm1v6o1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;(via &lt;a href="http://screengrab.tumblr.com/"&gt;screengrab&lt;/a&gt;)&lt;/p&gt;</description><link>http://arcanebolt.net/post/221884631</link><guid>http://arcanebolt.net/post/221884631</guid><pubDate>Sat, 24 Oct 2009 10:48:19 -0500</pubDate></item><item><title>arcanebolt will be at Express Media Express.

Friday, October...</title><description>&lt;img src="http://24.media.tumblr.com/tumblr_kru6ddP75c1qzivt3o1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;arcanebolt will be at &lt;a href="http://nightingaletheatre.org/nightingalefront1.html"&gt;Express Media Express&lt;/a&gt;&lt;a&gt;.
&lt;br/&gt;&lt;br/&gt;
Friday, October 23rd-Sunday October 25th, Various Times, Free
&lt;br/&gt;&lt;br/&gt;
Click through for more info.&lt;/a&gt;&lt;/p&gt;</description><link>http://arcanebolt.net/post/218500638</link><guid>http://arcanebolt.net/post/218500638</guid><pubDate>Tue, 20 Oct 2009 18:24:49 -0500</pubDate></item><item><title>Photo</title><description>&lt;img src="http://29.media.tumblr.com/ELlFKDWuFqnx1eoij1tuolJ7o1_500.png"/&gt;&lt;br/&gt;&lt;br/&gt;</description><link>http://arcanebolt.net/post/154486562</link><guid>http://arcanebolt.net/post/154486562</guid><pubDate>Sun, 02 Aug 2009 17:55:55 -0500</pubDate></item><item><title>Photo</title><description>&lt;img src="http://30.media.tumblr.com/ELlFKDWuFqnvawmyD8g156J1o1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;</description><link>http://arcanebolt.net/post/154461797</link><guid>http://arcanebolt.net/post/154461797</guid><pubDate>Sun, 02 Aug 2009 17:07:19 -0500</pubDate></item><item><title>Photo</title><description>&lt;img src="http://24.media.tumblr.com/ELlFKDWuFqnva2jl7DImUgGlo1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;</description><link>http://arcanebolt.net/post/154461498</link><guid>http://arcanebolt.net/post/154461498</guid><pubDate>Sun, 02 Aug 2009 17:06:40 -0500</pubDate></item><item><title>Photo</title><description>&lt;img src="http://26.media.tumblr.com/ELlFKDWuFqnv9evaSXLg44ceo1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;</description><link>http://arcanebolt.net/post/154461245</link><guid>http://arcanebolt.net/post/154461245</guid><pubDate>Sun, 02 Aug 2009 17:06:09 -0500</pubDate></item><item><title>Photo</title><description>&lt;img src="http://27.media.tumblr.com/ELlFKDWuFqnv8ad3exl6Y7h6o1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;</description><link>http://arcanebolt.net/post/154460871</link><guid>http://arcanebolt.net/post/154460871</guid><pubDate>Sun, 02 Aug 2009 17:05:17 -0500</pubDate></item><item><title>Photo</title><description>&lt;img src="http://26.media.tumblr.com/ELlFKDWuFqnv7in0TCvsVpbgo1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;</description><link>http://arcanebolt.net/post/154460537</link><guid>http://arcanebolt.net/post/154460537</guid><pubDate>Sun, 02 Aug 2009 17:04:41 -0500</pubDate></item><item><title>Photo</title><description>&lt;img src="http://25.media.tumblr.com/ELlFKDWuFqnv6rlo0tQSFVP5o1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;</description><link>http://arcanebolt.net/post/154460242</link><guid>http://arcanebolt.net/post/154460242</guid><pubDate>Sun, 02 Aug 2009 17:04:06 -0500</pubDate></item><item><title>Photo</title><description>&lt;img src="http://24.media.tumblr.com/ELlFKDWuFqnv5qj77UO1rREyo1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;</description><link>http://arcanebolt.net/post/154459886</link><guid>http://arcanebolt.net/post/154459886</guid><pubDate>Sun, 02 Aug 2009 17:03:18 -0500</pubDate></item><item><title>arduino sketch
28 color gimp palette and palette...</title><description>&lt;img src="http://24.media.tumblr.com/ELlFKDWuFpv5s8m0hiGiol4Po1_500.png"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;&lt;a href="http://arcanebolt.net/post/140990262/arduino-vga-synth-28colors"&gt;arduino sketch&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://arcanebolt.net/post/140987241/28-color-gimp-palette"&gt;28 color gimp palette&lt;/a&gt; and &lt;a href="http://arcanebolt.net/post/140987710/28-color-gimp-palette-generator"&gt;palette generator&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://arcanebolt.net/post/140988800/indexed-image-to-avr-pin-bitmap"&gt;index image to avr pin bitmap converter&lt;/a&gt;.&lt;/p&gt;</description><link>http://arcanebolt.net/post/140991189</link><guid>http://arcanebolt.net/post/140991189</guid><pubDate>Mon, 13 Jul 2009 15:54:51 -0500</pubDate></item><item><title>basic arduino sketch for a 28 color vga synthesizer</title><description>&lt;p&gt;this arduino sketch displays a 32x32 pixel image. two potentiometers can been hooked up to analog inputs 0 and 1 for adjusting/corrupting the hsync/vsync. a potentiometer on analog input 2 scrolls the image vertically and adjacent memory. images can be uploaded via serial.

&lt;pre&gt;
// copy-it-right

#define VSYNC 1 &lt;&lt; 0
#define HSYNC 1 &lt;&lt; 1

// high voltage (bright) RGB
#define HR     1 &lt;&lt; 2
#define HG     1 &lt;&lt; 3
#define HB     1 &lt;&lt; 4

// low voltage (dim) RGB
#define LR     1 &lt;&lt; 5
#define LG     1 &lt;&lt; 6
#define LB     1 &lt;&lt; 7


#define NOM1 asm("nop");
#define NOM10 asm("nop\t\nnop\t\nnop\t\nnop\t\nnop\t\nnop\t\nnop\t\nnop\t\nnop\t\nnop");


int lnc = 0;
int lna = 0;
int lnt = 479;

int imgb, imgc = 0, imgf = 0;

unsigned short int lni = 0;
unsigned char img[1792];


void hsync()
{
  NOM10;
  PORTB &amp;= ~HSYNC;
  NOM10; NOM10; NOM10; NOM10; NOM10; NOM10;
  PORTB |= HSYNC;
  NOM10; NOM10; NOM10;
}


inline void pxl(int x) 
{
  PORTD = img[lni + x];
  NOM1; NOM1; NOM1; NOM1; NOM1; NOM1;
}


ISR(TIMER1_COMPA_vect)
{
  // vsync
  if (lnc == -35) PORTB &amp;= ~VSYNC;
  if (lnc == -37) PORTB |= VSYNC;

  hsync();

  if (lnc &gt; -1) {
    // drawing a 30x30 image for now

    lni = (lnc + lna) &gt;&gt; 4 &lt;&lt; 5;

    // 382 cycles
    pxl( 0); pxl( 1); pxl( 2); pxl( 3); pxl( 4); pxl( 5); pxl( 6); pxl( 7);
    pxl( 8); pxl( 9); pxl(10); pxl(11); pxl(12); pxl(13); pxl(14); pxl(15);
    pxl(16); pxl(17); pxl(18); pxl(19); pxl(20); pxl(21); pxl(22); pxl(23);
    pxl(24); pxl(25); pxl(26); pxl(27); pxl(28); pxl(29); pxl(30); pxl(31);

    // 2 cycles
    PORTD = 0;
  }

  lnc++;
  if (lnc &gt; lnt) {
    lnc = -45;
  }
}


void setup()
{
  // pins
  DDRD = HR | HG | HB | LR | LG | LB;
  DDRB = VSYNC | HSYNC;
  PORTB = VSYNC | HSYNC;

  // timer
  TIMSK0 &amp;= !(1 &lt;&lt; TOIE0);
  cli();
  TCCR1A = 0;
  TCCR1B = 1 &lt;&lt; WGM22 | 1 &lt;&lt; CS10;
  OCR1A = 508;
  TIMSK1 = 1 &lt;&lt; OCIE1A;
  sei();
  
  Serial.begin(9600);
}


void read_img_data()
{
  if (Serial.available() &gt; 0) {
    if (Serial.read() == B11111100) {
      noInterrupts();
      lnt = 479;
      while (imgc &lt; 1792) {
        imgb = Serial.read();
        if (imgb &gt; -1) {
          img[imgc] = (unsigned char) imgb;
          imgf = 0;
          imgc++;
        } else {
          imgf++;
          if (imgf &gt; 4096) {
            interrupts();
            return;
          }
        }
      }
      interrupts();
    }
  }
}


void loop()
{
  read_img_data();
  OCR1A = analogRead(0);  // 5K potentiometer
  lnt = analogRead(1) * 2;  // 5K potentiometer
  lna = analogRead(2);  // 1K or 5K potentiometer
}
&lt;/pre&gt;&lt;/p&gt;</description><link>http://arcanebolt.net/post/140990262</link><guid>http://arcanebolt.net/post/140990262</guid><pubDate>Mon, 13 Jul 2009 15:52:42 -0500</pubDate></item><item><title>indexed image to avr pin bitmap</title><description>&lt;p&gt;this python script converts an indexed image to the avr pin bitmap equivalent. uses a special &lt;a href="http://arcanebolt.net/post/140987241/28-color-gimp-palette"&gt;gimp palette&lt;/a&gt; that maps indexed colors to the pin bitmap. i.e. for the 28 color gimp palette, a bright red indexed pixel will be converted to the byte &lt;code&gt;00100100&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;usage: &lt;code&gt;img2avr.py palette.gpl image.png &gt; image.out&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;img2avr.py&lt;/strong&gt;&lt;/p&gt;

&lt;pre&gt;
# copy-it-right

import sys

from PIL import Image


def parse_palette(data):
    palette = []
    after_header = False
    for line in data:
        if line.startswith('#'):
            after_header = True
            continue
        if after_header:
            palette.append(int(line.split()[-1], 2))
    return palette


def main():
    color_pin_map = parse_palette(open(sys.argv[1]))
    image = Image.open(sys.argv[2])

    assert image.mode == 'P', 'image must be indexed'

    sys.stdout.write(chr(int('11111100', 2)))

    for i, px in enumerate(image.getdata()):
        sys.stdout.write(chr(color_pin_map[px]))


if __name__ == '__main__':
    main()
&lt;/pre&gt;</description><link>http://arcanebolt.net/post/140988800</link><guid>http://arcanebolt.net/post/140988800</guid><pubDate>Mon, 13 Jul 2009 15:49:00 -0500</pubDate></item><item><title>28 color gimp palette generator</title><description>&lt;p&gt;this python script generates a &lt;a href="http://arcanebolt.net/post/140987241/28-color-gimp-palette"&gt;gimp palette&lt;/a&gt; which you can use to convert rgb images to an indexed image which can be &lt;a href="http://arcanebolt.net/post/140988800/indexed-image-to-avr-pin-bitmap"&gt;converted for use on the avr&lt;/a&gt;.&lt;/p&gt;

&lt;pre&gt;
# copy-it-right

def main():
    colors = set()

    print 'GIMP Palette'
    print 'Name: avr-vga'
    print 'Columns: 0'
    print '#'

    for n in range(0, 256):
        b = bin(n)[2:].rjust(8, '0')[:-2] + '00'
        colors.add(b)

    colors = list(colors)
    colors.sort()
    colors.reverse()
    color_map = {}

    for c in colors:

        r = 0
        g = 0
        b = 0

        if int(c[0]):
            b += 127.5
        if int(c[1]):
            g += 127.5
        if int(c[2]):
            r += 127.5
        if int(c[3]):
            b += 127.5
        if int(c[4]):
            g += 127.5
        if int(c[5]):
            r += 127.5

        color_map[(r, g, b)] = c

    colors = color_map.items()
    colors.sort(key=lambda i: i[0])

    for (r, g, b), c in colors:
        print ' %3i %3i %3i\t%s' % (r, g, b, c)


if __name__ == '__main__':
    main()
&lt;/pre&gt;</description><link>http://arcanebolt.net/post/140987710</link><guid>http://arcanebolt.net/post/140987710</guid><pubDate>Mon, 13 Jul 2009 15:46:00 -0500</pubDate></item><item><title>28 color gimp palette</title><description>&lt;p&gt;&lt;pre&gt;
GIMP Palette
Name: avr-vga
Columns: 0
#
   0   0   0	00000000
   0   0 127	00010000
   0   0 255	10010000
   0 127   0	00001000
   0 127 127	00011000
   0 127 255	10011000
   0 255   0	01001000
   0 255 127	01011000
   0 255 255	11011000
 127   0   0	00000100
 127   0 127	00010100
 127   0 255	10010100
 127 127   0	00001100
 127 127 127	00011100
 127 127 255	10011100
 127 255   0	01001100
 127 255 127	01011100
 127 255 255	11011100
 255   0   0	00100100
 255   0 127	00110100
 255   0 255	10110100
 255 127   0	00101100
 255 127 127	00111100
 255 127 255	10111100
 255 255   0	01101100
 255 255 127	01111100
 255 255 255	11111100
&lt;/pre&gt;&lt;/p&gt;</description><link>http://arcanebolt.net/post/140987241</link><guid>http://arcanebolt.net/post/140987241</guid><pubDate>Mon, 13 Jul 2009 15:45:47 -0500</pubDate></item><item><title>Photo</title><description>&lt;img src="http://30.media.tumblr.com/ELlFKDWuFpv4tb7cjxeJcPauo1_r1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;</description><link>http://arcanebolt.net/post/140949820</link><guid>http://arcanebolt.net/post/140949820</guid><pubDate>Mon, 13 Jul 2009 14:31:07 -0500</pubDate></item><item><title>Photo</title><description>&lt;img src="http://28.media.tumblr.com/ELlFKDWuFpv4ubs28L4qS6YDo1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;</description><link>http://arcanebolt.net/post/140950230</link><guid>http://arcanebolt.net/post/140950230</guid><pubDate>Mon, 13 Jul 2009 14:29:03 -0500</pubDate></item><item><title>Photo</title><description>&lt;img src="http://28.media.tumblr.com/ELlFKDWuFpv4tslhqHHpiY0co1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;</description><link>http://arcanebolt.net/post/140950049</link><guid>http://arcanebolt.net/post/140950049</guid><pubDate>Mon, 13 Jul 2009 14:28:38 -0500</pubDate></item><item><title>Photo</title><description>&lt;img src="http://26.media.tumblr.com/ELlFKDWuFpv4rd5pf8XhYFpLo1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;</description><link>http://arcanebolt.net/post/140949040</link><guid>http://arcanebolt.net/post/140949040</guid><pubDate>Mon, 13 Jul 2009 14:26:45 -0500</pubDate></item></channel></rss>
