CINXE.COM

Vector games 32c3 - Trammell Hudson's Projects

<!doctype html> <html lang="en" class="no-js"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <meta name="description" content="Collection of my projects and hacks."> <link rel="canonical" href="https://trmm.net/Vector_games_32c3/"> <link rel="icon" href="../assets/images/favicon.png"> <meta name="generator" content="mkdocs-1.4.2, mkdocs-material-9.0.6"> <meta property="og:title" content="Vector games 32c3"> <meta property="og:site_name" content="Trammell Hudson's Projects"> <meta property="og:url" content="https://trmm.net/Vector_games_32c3/"> <meta property="og:description" content="Collection of my projects and hacks."> <meta property="og:image" content="https://trmm.net/images/logo.png"> <title>Vector games 32c3 - Trammell Hudson's Projects</title> <link rel="stylesheet" href="../assets/stylesheets/main.558e4712.min.css"> <link rel="stylesheet" href="../assets/stylesheets/palette.2505c338.min.css"> <!-- Load fonts from Google --> <link href="https://fonts.gstatic.com" rel="preconnect" crossorigin /> <link rel="stylesheet" type="text/css" href="https://fonts.googleapis.com/css?family=IBM+Plex+Serif:300,400,400i,700%7CIBM+Plex+Sans:500,600,700%7CIBM+Plex+Mono&display=fallback" /> <style> body, input { font-family: "IBM Plex Serif", "Helvetica Neue", Helvetica, Arial, sans-serif; } pre, code, kbd { font-family: "IBM Plex Mono", "Courier New", Courier, monospace; } h1, h2, h3, h4, h5, h6 { font-family: "IBM Plex Sans", sans-serif; font-weight: 700 !important; } </style> <link rel="stylesheet" href="../extra.css"> <script>__md_scope=new URL("..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script> </head> <body dir="ltr" data-md-color-scheme="default" data-md-color-primary="black" data-md-color-accent="purple"> <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off"> <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off"> <label class="md-overlay" for="__drawer"></label> <div data-md-component="skip"> <a href="#history-of-vector-graphics" class="md-skip"> Skip to content </a> </div> <div data-md-component="announce"> </div> <header class="md-header" data-md-component="header"> <nav class="md-header__inner md-grid" aria-label="Header"> <a href=".." title="Trammell Hudson&#39;s Projects" class="md-header__button md-logo" aria-label="Trammell Hudson's Projects" data-md-component="logo"> <img src="../images/logo.png" alt="logo"> </a> <label class="md-header__button md-icon" for="__drawer"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg> </label> <div class="md-header__title" data-md-component="header-title"> <div class="md-header__ellipsis"> <div class="md-header__topic"> <span class="md-ellipsis"> Trammell Hudson's Projects </span> </div> <div class="md-header__topic" data-md-component="header-topic"> <span class="md-ellipsis"> Vector games 32c3 </span> </div> </div> </div> <label class="md-header__button md-icon" for="__search"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg> </label> <div class="md-search" data-md-component="search" role="dialog"> <label class="md-search__overlay" for="__search"></label> <div class="md-search__inner" role="search"> <form class="md-search__form" name="search"> <input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required> <label class="md-search__icon md-icon" for="__search"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg> </label> <nav class="md-search__options" aria-label="Search"> <button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg> </button> </nav> </form> <div class="md-search__output"> <div class="md-search__scrollwrap" data-md-scrollfix> <div class="md-search-result" data-md-component="search-result"> <div class="md-search-result__meta"> Initializing search </div> <ol class="md-search-result__list" role="presentation"></ol> </div> </div> </div> </div> </div> <div class="md-header__source"> <a href="https://github.com/osresearch/" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg> </div> <div class="md-source__repository"> GitHub </div> </a> </div> </nav> </header> <div class="md-container" data-md-component="container"> <main class="md-main" data-md-component="main"> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" > <div class="md-sidebar__scrollwrap"> <div class="md-sidebar__inner"> <nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0"> <label class="md-nav__title" for="__drawer"> <a href=".." title="Trammell Hudson&#39;s Projects" class="md-nav__button md-logo" aria-label="Trammell Hudson's Projects" data-md-component="logo"> <img src="../images/logo.png" alt="logo"> </a> Trammell Hudson's Projects </label> <div class="md-nav__source"> <a href="https://github.com/osresearch/" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg> </div> <div class="md-source__repository"> GitHub </div> </a> </div> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_1" type="checkbox" id="__nav_1" > <label class="md-nav__link" for="__nav_1" tabindex="0" aria-expanded="false"> Categories <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" aria-label="Categories" data-md-level="1"> <label class="md-nav__title" for="__nav_1"> <span class="md-nav__icon md-icon"></span> Categories </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../Category%3ARetrocomputing/" class="md-nav__link"> Retrocomputing </a> </li> <li class="md-nav__item"> <a href="../Category%3AVector_display/" class="md-nav__link"> Vector display </a> </li> <li class="md-nav__item"> <a href="../Category%3ARobots/" class="md-nav__link"> Robots </a> </li> <li class="md-nav__item"> <a href="../Category%3AClocks/" class="md-nav__link"> Clocks </a> </li> <li class="md-nav__item"> <a href="../Category%3A3D_Printing/" class="md-nav__link"> 3D Printing </a> </li> <li class="md-nav__item"> <a href="../Category%3ALaser_cutter/" class="md-nav__link"> Laser cutter </a> </li> <li class="md-nav__item"> <a href="../Category%3ATeensy/" class="md-nav__link"> Teensy </a> </li> <li class="md-nav__item"> <a href="../Category%3AMac/" class="md-nav__link"> Mac </a> </li> <li class="md-nav__item"> <a href="../Category%3APhotography/" class="md-nav__link"> Photography </a> </li> <li class="md-nav__item"> <a href="../Category%3AHobbies/" class="md-nav__link"> Hobbies </a> </li> <li class="md-nav__item"> <a href="../Category%3ALED/" class="md-nav__link"> LED </a> </li> <li class="md-nav__item"> <a href="../Category%3ALEDscape/" class="md-nav__link"> LEDscape </a> </li> <li class="md-nav__item"> <a href="../Category%3AReverse_engineering/" class="md-nav__link"> Reverse engineering </a> </li> <li class="md-nav__item"> <a href="../Category%3ATalks/" class="md-nav__link"> Talks </a> </li> <li class="md-nav__item"> <a href="../Category%3AHacks/" class="md-nav__link"> Hacks </a> </li> <li class="md-nav__item"> <a href="../Category%3ASecurity/" class="md-nav__link"> Security </a> </li> <li class="md-nav__item"> <a href="../Category%3AAircraft/" class="md-nav__link"> Aircraft </a> </li> <li class="md-nav__item"> <a href="../Category%3AArt/" class="md-nav__link"> Art </a> </li> <li class="md-nav__item"> <a href="../Category%3ABiking/" class="md-nav__link"> Biking </a> </li> <li class="md-nav__item"> <a href="../Category%3ALED/" class="md-nav__link"> Blinky </a> </li> <li class="md-nav__item"> <a href="../Category%3ABurning_Man/" class="md-nav__link"> Burning Man </a> </li> <li class="md-nav__item"> <a href="../Category%3AClasses/" class="md-nav__link"> Classes </a> </li> <li class="md-nav__item"> <a href="../Category%3ACoffee/" class="md-nav__link"> Coffee </a> </li> <li class="md-nav__item"> <a href="../Category%3AESP/" class="md-nav__link"> ESP </a> </li> <li class="md-nav__item"> <a href="../Category%3AFont/" class="md-nav__link"> Font </a> </li> <li class="md-nav__item"> <a href="../Category%3AGames/" class="md-nav__link"> Games </a> </li> <li class="md-nav__item"> <a href="../Category%3AInteractive_Show/" class="md-nav__link"> Interactive Show </a> </li> <li class="md-nav__item"> <a href="../Category%3ABeagleBone/" class="md-nav__link"> BeagleBone </a> </li> <li class="md-nav__item"> <a href="../Category%3APRU/" class="md-nav__link"> PRU </a> </li> <li class="md-nav__item"> <a href="../Category%3AMakerfaire/" class="md-nav__link"> Makerfaire </a> </li> <li class="md-nav__item"> <a href="../Category%3ANYCR/" class="md-nav__link"> NYCR </a> </li> <li class="md-nav__item"> <a href="../Category%3AOctober_First/" class="md-nav__link"> October First </a> </li> <li class="md-nav__item"> <a href="../Category%3AOscilloscope/" class="md-nav__link"> Oscilloscope </a> </li> <li class="md-nav__item"> <a href="../Category%3AROM/" class="md-nav__link"> ROM </a> </li> <li class="md-nav__item"> <a href="../Category%3ARadio/" class="md-nav__link"> Radio </a> </li> <li class="md-nav__item"> <a href="../Category%3ARaspberry_Pi/" class="md-nav__link"> Raspberry Pi </a> </li> <li class="md-nav__item"> <a href="../Category%3AShopbot/" class="md-nav__link"> Shopbot </a> </li> <li class="md-nav__item"> <a href="../Category%3ASoftware/" class="md-nav__link"> Software </a> </li> <li class="md-nav__item"> <a href="../Category%3ASparkCore/" class="md-nav__link"> SparkCore </a> </li> <li class="md-nav__item"> <a href="../Category%3AThingiverse/" class="md-nav__link"> Thingiverse </a> </li> <li class="md-nav__item"> <a href="../Category%3AUSB_Devices/" class="md-nav__link"> USB Devices </a> </li> <li class="md-nav__item"> <a href="../Category%3AVideo/" class="md-nav__link"> Video </a> </li> <li class="md-nav__item"> <a href="../Category%3AWearables/" class="md-nav__link"> Wearables </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_2" type="checkbox" id="__nav_2" > <label class="md-nav__link" for="__nav_2" tabindex="0" aria-expanded="false"> Chronological <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" aria-label="Chronological" data-md-level="1"> <label class="md-nav__title" for="__nav_2"> <span class="md-nav__icon md-icon"></span> Chronological </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../Category%3A2010/" class="md-nav__link"> 2010 </a> </li> <li class="md-nav__item"> <a href="../Category%3A2011/" class="md-nav__link"> 2011 </a> </li> <li class="md-nav__item"> <a href="../Category%3A2012/" class="md-nav__link"> 2012 </a> </li> <li class="md-nav__item"> <a href="../Category%3A2013/" class="md-nav__link"> 2013 </a> </li> <li class="md-nav__item"> <a href="../Category%3A2014/" class="md-nav__link"> 2014 </a> </li> <li class="md-nav__item"> <a href="../Category%3A2015/" class="md-nav__link"> 2015 </a> </li> <li class="md-nav__item"> <a href="../Category%3A2016/" class="md-nav__link"> 2016 </a> </li> <li class="md-nav__item"> <a href="../Category%3A2017/" class="md-nav__link"> 2017 </a> </li> <li class="md-nav__item"> <a href="../Category%3A2018/" class="md-nav__link"> 2018 </a> </li> <li class="md-nav__item"> <a href="../Category%3A2019/" class="md-nav__link"> 2019 </a> </li> <li class="md-nav__item"> <a href="../Category%3A2020/" class="md-nav__link"> 2020 </a> </li> <li class="md-nav__item"> <a href="../Category%3A2021/" class="md-nav__link"> 2021 </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3" type="checkbox" id="__nav_3" > <label class="md-nav__link" for="__nav_3" tabindex="0" aria-expanded="false"> About <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" aria-label="About" data-md-level="1"> <label class="md-nav__title" for="__nav_3"> <span class="md-nav__icon md-icon"></span> About </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../About/" class="md-nav__link"> About Me </a> </li> <li class="md-nav__item"> <a href="../PGP/" class="md-nav__link"> Contact </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" > <div class="md-sidebar__scrollwrap"> <div class="md-sidebar__inner"> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class="md-nav__title" for="__toc"> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> <li class="md-nav__item"> <a href="#history-of-vector-graphics" class="md-nav__link"> History of Vector Graphics </a> <nav class="md-nav" aria-label="History of Vector Graphics"> <ul class="md-nav__list"> <li class="md-nav__item"> <a href="#analog-computers" class="md-nav__link"> Analog computers </a> </li> <li class="md-nav__item"> <a href="#digital-computers" class="md-nav__link"> Digital computers </a> </li> <li class="md-nav__item"> <a href="#why-vector-games" class="md-nav__link"> Why Vector Games? </a> </li> </ul> </nav> </li> <li class="md-nav__item"> <a href="#vector-generating-hardware" class="md-nav__link"> Vector Generating Hardware </a> <nav class="md-nav" aria-label="Vector Generating Hardware"> <ul class="md-nav__list"> <li class="md-nav__item"> <a href="#how-vectors-are-drawn" class="md-nav__link"> How vectors are drawn </a> </li> <li class="md-nav__item"> <a href="#analog-vs-digital-vector-generation" class="md-nav__link"> Analog vs digital vector generation </a> </li> </ul> </nav> </li> <li class="md-nav__item"> <a href="#vector-display-hardware" class="md-nav__link"> Vector Display Hardware </a> <nav class="md-nav" aria-label="Vector Display Hardware"> <ul class="md-nav__list"> <li class="md-nav__item"> <a href="#oscilloscopes" class="md-nav__link"> Oscilloscopes </a> </li> <li class="md-nav__item"> <a href="#storage-displays" class="md-nav__link"> Storage displays </a> </li> <li class="md-nav__item"> <a href="#vectorscopes" class="md-nav__link"> Vectorscopes </a> </li> <li class="md-nav__item"> <a href="#vectrex-consoles" class="md-nav__link"> Vectrex consoles </a> </li> <li class="md-nav__item"> <a href="#laser-projectors" class="md-nav__link"> Laser projectors </a> </li> </ul> </nav> </li> <li class="md-nav__item"> <a href="#mame" class="md-nav__link"> MAME </a> <nav class="md-nav" aria-label="MAME"> <ul class="md-nav__list"> <li class="md-nav__item"> <a href="#emulating-vector-displays" class="md-nav__link"> Emulating Vector Displays </a> </li> <li class="md-nav__item"> <a href="#patches-for-head" class="md-nav__link"> Patches for head </a> </li> <li class="md-nav__item"> <a href="#patches-for-raspberry-pi" class="md-nav__link"> Patches for Raspberry Pi </a> </li> <li class="md-nav__item"> <a href="#playing-games" class="md-nav__link"> Playing games </a> </li> </ul> </nav> </li> <li class="md-nav__item"> <a href="#taking-it-further" class="md-nav__link"> Taking it further </a> <nav class="md-nav" aria-label="Taking it further"> <ul class="md-nav__list"> <li class="md-nav__item"> <a href="#custom-input-devices" class="md-nav__link"> Custom input devices </a> </li> <li class="md-nav__item"> <a href="#creative-coding-with-vectors" class="md-nav__link"> Creative coding with vectors </a> </li> <li class="md-nav__item"> <a href="#more-info" class="md-nav__link"> More info </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-content" data-md-component="content"> <article class="md-content__inner md-typeset"> <h1>Vector games 32c3</h1> <p><a href="https://www.flickr.com/photos/osr/24210859035/lightbox"><img src="https://live.staticflickr.com/1627/24210859035_a48855f435_b.jpg" srcset="https://live.staticflickr.com/1627/24210859035_a48855f435_b.jpg 1024w, https://live.staticflickr.com/1627/24210859035_a48855f435.jpg 400w" /></a></p> <p>This is our talk for <a href="/32c3">32c3</a> on vector retro-gaming and interfacing MAME with XY displays. The talk is the result of a collaboration with <a href="http://adelle.ninja">Adelle Lin</a>, another <a href="/NYCR">NYC Resistor</a> member who is a digital designer with a focus on building playful spaces, games and interaction. If you prefer to watch, <a href="https://media.ccc.de/v/32c3-7238-vector_retrogaming">the half hour video is online</a>.</p> <h2 id="history-of-vector-graphics">History of Vector Graphics</h2> <h3 id="analog-computers">Analog computers</h3> <p><a href="https://www.flickr.com/photos/osr/23607948836/lightbox"><img src="https://live.staticflickr.com/643/23607948836_b5e7b5976c_b.jpg" srcset="https://live.staticflickr.com/643/23607948836_b5e7b5976c_b.jpg 1024w, https://live.staticflickr.com/643/23607948836_b5e7b5976c.jpg 400w" /></a> The earliest <a href="https://en.wikipedia.org/wiki/analog computer">analog computers</a> used oscilloscopes or plotters to output their results. This <a href="https://en.wikipedia.org/wiki/Electronic Associates">EAI680</a> is displaying the result of a differential equation modeling a dampened pendulum on its Tektronix XY monitor.</p> <p><center><img src="http://49.media.tumblr.com/bff502de63f8f16709e61c809ef7869f/tumblr_nyk4t2vHjz1qju2zso1_500.gif"/></center></p> <p>The first video game, <a href="/Tennis_for_Two">Tennis for Two</a> in 1958, was built with a similar analog computer and displayed on an oscillograph. The bounce of the ball was implemented as a differential equation, very similar to the one shown on the EAI680.</p> <p><a href="https://en.wikipedia.org/wiki/File:Tennis_For_Two_Schematic_1.jpg"><img alt="Tennis_For_Two_Schematic_1.jpg" src="https://en.wikipedia.org/wiki/en:Special:Filepath/Tennis_For_Two_Schematic_1.jpg" /></a></p> <p>There is no "source code" for Tennis for Two since it was implemented entirely in hardware. There are relays that control the direction of the ball, comparators that detect when it hits the ground or the net, opamps that implement the differential equation, resistors that simulate drag, and so on.</p> <p><center><img src="https://pbs.twimg.com/media/CUSV5PVXAAEmd1i.jpg" width=500/></center></p> <p>Adelle worked on a modern recreation of it for <a href="/Silicon_City">Silicon City</a> in collaboration with producer Jeanne Angel, games studio Dozen Eyes and physicist Peter Takacs. Due to the pressure of keeping something running maintenance-free for the five months of the museum exhibit, they used a 4K monitor and emulated the game. During the real demo of Tennis for Two at Brookhaven there were technicians replacing parts as they broke, something that the NYHS wanted to avoid.</p> <h3 id="digital-computers">Digital computers</h3> <p><a href="https://en.wikipedia.org/wiki/File:Spacewar!-PDP-1-20070512.jpg"><img alt="Spacewar!-PDP-1-20070512.jpg" src="https://en.wikipedia.org/wiki/en:Special:Filepath/Spacewar!-PDP-1-20070512.jpg" /></a></p> <p><a href="https://en.wikipedia.org/wiki/Spacewar (video game)">Spacewar!</a> from 1962 was one of the first digital video games and used the XY display of the PDP-1 to display the players' ships and weapons, as well as the starfield background. The controls were knobs and buttons on the front panel of the system, although many sites built custom controls to avoid wearing out the official ones.</p> <p><a href="https://www.flickr.com/photos/osr/23266142599/lightbox"><img src="https://live.staticflickr.com/5728/23266142599_d97001f496_b.jpg" srcset="https://live.staticflickr.com/5728/23266142599_d97001f496_b.jpg 1024w, https://live.staticflickr.com/5728/23266142599_d97001f496.jpg 400w" /></a></p> <p>Storage tube vector displays were very popular for engineering applications since they could draw very high resolution lines and maintain a stable image. They are not well suited for games, however, but allowed very low memory computers to draw incredibly complex images over low bandwidth links.</p> <h3 id="why-vector-games">Why Vector Games?</h3> <blockquote> <p>“In 1978 when the Digital Vector Generator was developed for Lunar Lander, memory was much too expensive for a frame buffer in a video game. <a href="…">…</a> Two frame buffers of 512x512x4 would have required 128 memory devices costing <a href="a">total of</a> $614.”</p> <pre><code> -- Jed Margolin, Atari engineer </code></pre> </blockquote> <p>This is why is was worth going through all of this effort to draw vectors when most displays are raster-scan. The cost of building a raster version of Asteroids with a frame buffer than could hold the screen resolution of 1024x1024 would have been thousands of dollars in hardware. It also requires a display that could draw that many vertical lines: most CRTs were being built for television use and only had a few hundred vertical lines of resolution.</p> <table class="gallery"> <tbody markdown='1'> <tr> <td class="gallery-image col-1" width="50.0%"><a href="https://en.wikipedia.org/wiki/File:StarWars_Electron.gif"><img alt="StarWars_Electron.gif" src="https://en.wikipedia.org/wiki/en:Special:Filepath/StarWars_Electron.gif" /></a></td> <td class="gallery-image col-2" width="50.0%"><a href="https://www.flickr.com/photos/osr/22868484221/lightbox"><img src="https://live.staticflickr.com/730/22868484221_11f79b73c7.jpg" srcset="https://live.staticflickr.com/730/22868484221_11f79b73c7_b.jpg 1024w, https://live.staticflickr.com/730/22868484221_11f79b73c7.jpg 400w" /></a></td> </tr> <tr markdown='1' class='gallery-caption-row'> <td class="gallery-caption col-1" width="50.0%">Star Wars on the Acorn Electron</td> <td class="gallery-caption col-2" width="50.0%">Star Wars on a vector display</td> <p></tr> </tbody></p> </table> <p>Compare the blocky, pixelated bitmap Starwars game to the vector vesion. It's really stunning how much more detail the vector lines can resolve and how well they can represent the circle of the Death Star.</p> <table class="gallery"> <tbody markdown='1'> <tr> <td class="gallery-image col-1" width="50.0%"><img src="http://49.media.tumblr.com/a9a8e111302bb6a235492ae3f8f4362f/tumblr_nzkac2E1Pd1qju2zso1_r1_400.gif"/></td> <td class="gallery-image col-2" width="50.0%"><img src="http://45.media.tumblr.com/19029762f6e31252bf6b260f0ac18071/tumblr_nxh19194QO1qju2zso1_400.gif"/></td> </tr> <tr markdown='1' class='gallery-caption-row'> <td class="gallery-caption col-1" width="50.0%">Star Wars on the Atari 2600</td> <td class="gallery-caption col-2" width="50.0%">Star Wars on a vector display</td> <p></tr> </tbody></p> </table> <p>Additionally, vectors make it easier to do 3D animation. Here's a comparison of a bitmap game attempting to simulate a 3D world with the Starwars scaled and rotated 3D model of a Tie-Fighter. Which would you rather play?</p> <h2 id="vector-generating-hardware">Vector Generating Hardware</h2> <h3 id="how-vectors-are-drawn">How vectors are drawn</h3> <p><a href="https://www.flickr.com/photos/osr/21788707432/lightbox"><img src="https://live.staticflickr.com/5639/21788707432_0eae73ef04_b.jpg" srcset="https://live.staticflickr.com/5639/21788707432_0eae73ef04_b.jpg 1024w, https://live.staticflickr.com/5639/21788707432_0eae73ef04.jpg 400w" /></a> In a vector display the beam doesn't draw horizontal "raster" or "scan lines" like a conventional CRT. Instead the beam can be steered to any point on the screen and creates a bright dot at that location. With non-storage vector displays, the longer the beam remains on that point, the brighter it becomes. By varying the X and Y inputs, it is possible to draw lines or other shapes. By moving quickly or by varying the brightness ("Z") input, disconnected lines can be drawn. In this case I've disabled the Z input so that we can see the drawing order of the objects on screen. Lunar Lander shown here uses a "digital vector generator", which directly drives the beam.</p> <p><a href="https://www.flickr.com/photos/osr/21785257252/lightbox"><img src="https://live.staticflickr.com/620/21785257252_489a45dc2f_b.jpg" srcset="https://live.staticflickr.com/620/21785257252_489a45dc2f_b.jpg 1024w, https://live.staticflickr.com/620/21785257252_489a45dc2f.jpg 400w" /></a> Tempest uses an "analog vector generator", which always returns to center since that is the only defined point. In either case it is a "hard real time problem" to generate these vectors -- if the system pauses even for a few nanoseconds there is an appreciable change in the brightness of the line.</p> <h3 id="analog-vs-digital-vector-generation">Analog vs digital vector generation</h3> <p>I'm indebited to <a href="http://www.jmargolin.com/vgens/vgens.htm">Jed Margolin's guide to vector displays</a> for this section.</p> <table class="gallery"> <tbody markdown='1'> <tr> <td class="gallery-image col-1" width="50.0%"><img src="http://www.jmargolin.com/vgens/fig16.gif" /></td> <td class="gallery-image col-2" width="50.0%"><img src="http://www.jmargolin.com/vgens/fig15.gif" /></td> </tr> <tr markdown='1' class='gallery-caption-row'> <td class="gallery-caption col-1" width="50.0%">Digital Vector Generator schematic</td> <td class="gallery-caption col-2" width="50.0%">Analog Vector Generator schematic</td> <p></tr> </tbody></p> </table> <p>One way to generate the vectors is with a <a href="https://en.wikipedia.org/wiki/Digital-to-analog converter">Digital-to-analog converter</a> (DAC) that directly drives the X or Y input to the display. This is called a "Digital Vector Generator" and was used on the early games like <a href="/Asteroids">Asteroids</a> and <a href="/Lunar_Lander">Lunar Lander</a>. They used 10-bit DACs and an opamp configured as a buffer, but required that the CPU spend most of its time updating the inputs to the DAC and also limited the resolution to roughly 1024x768.</p> <p>Another technique was developed for later games like <a href="/Starwars">Starwars</a>. The "Analog Vector Generator" uses an opamp configured as an integrator by the addition of the capacitor on the feedback path. This means that the input to the DAC is the <strong>slope</strong> of the line to be generated and the analog nature of the opamp ensures that an "infinitely" smooth line will be drawn.</p> <p><a href="https://www.flickr.com/photos/osr/22676279872/lightbox"><img src="https://live.staticflickr.com/735/22676279872_1f9b9a88ed_b.jpg" srcset="https://live.staticflickr.com/735/22676279872_1f9b9a88ed_b.jpg 1024w, https://live.staticflickr.com/735/22676279872_1f9b9a88ed.jpg 400w" /></a> With modern hardware we can generate 12-bit lines that far exceed the resolution of the small vector displays and we can take advantage of the DMA engines on modern microcontrollers to offload sending the data to the DAC. This board is a prototype of my opensource hardware <a href="/V.st">v.st</a> boards and is easy enough to build on a breadboard for you own hacking.</p> <p><img src="https://pbs.twimg.com/media/CVn6i6aXIAAxc6H.png" /></p> <p>And since we have far more CPU power than when many of these games were created, I've also patched the vector generation code to sort the vectors to reduce the overall travel time. This makes a big difference for vector displays with lower bandwidth.</p> <h2 id="vector-display-hardware">Vector Display Hardware</h2> <h3 id="oscilloscopes">Oscilloscopes</h3> <p><a href="https://www.flickr.com/photos/osr/23400306889/lightbox"><img src="https://live.staticflickr.com/5635/23400306889_d780447a10_b.jpg" srcset="https://live.staticflickr.com/5635/23400306889_d780447a10_b.jpg 1024w, https://live.staticflickr.com/5635/23400306889_d780447a10.jpg 400w" /></a> Modern digital oscilloscopes are not very good for displaying vector data. The LCD might emulate phosphor persistence, but they typically only have 8-bit ADC and very low resolution. They are still super useful for general signal measuring, just not in this application!</p> <p><a href="https://www.flickr.com/photos/osr/7924405040/lightbox"><img src="https://live.staticflickr.com/8308/7924405040_d9c6512266_b.jpg" srcset="https://live.staticflickr.com/8308/7924405040_d9c6512266_b.jpg 1024w, https://live.staticflickr.com/8308/7924405040_d9c6512266.jpg 400w" /></a> Instead go to ebay or craigslist and find a $50 analog CRT two-channel scope with an X-Y mode. Anything with 5 MHz or more of bandwidth is fine -- the DACs on the v.st boards are less than 2 MHz anyway.</p> <h3 id="storage-displays">Storage displays</h3> <p><center><img src="https://j.gifs.com/5yymOK.gif"/></center> Storage tube displays are great for very detailed static vector images, but won't work well for games with high framerates. So save your money and don't spend it on a Tek 4014.</p> <h3 id="vectorscopes">Vectorscopes</h3> <p><a href="https://www.flickr.com/photos/osr/22654679341/lightbox"><img src="https://live.staticflickr.com/5801/22654679341_9154b37b85_b.jpg" srcset="https://live.staticflickr.com/5801/22654679341_9154b37b85_b.jpg 1024w, https://live.staticflickr.com/5801/22654679341_9154b37b85.jpg 400w" /></a> Vectorscopes like the <a href="/Tek_1720">Tek 1720</a> were used by TV stations to calibrate their colorbars and being phased out as the stations go digital. As a result these analog displays are plentiful and inexpensive on ebay. They use very fast electrostatic deflection and typically have small screens, but they tend to be super sharp. They also have differential inputs, so that you can don't need a negative output on the DAC.</p> <h3 id="vectrex-consoles">Vectrex consoles</h3> <table class="gallery"> <tbody markdown='1'> <tr> <td class="gallery-image col-1" width="50.0%"><a href="https://en.wikipedia.org/wiki/File:Vectrex-Console-Set.jpg"><img alt="Vectrex-Console-Set.jpg" src="https://en.wikipedia.org/wiki/en:Special:Filepath/Vectrex-Console-Set.jpg" /></a></td> <td class="gallery-image col-2" width="50.0%"><a href="https://www.flickr.com/photos/osr/23506499345/lightbox"><img src="https://live.staticflickr.com/5819/23506499345_b0a448c20a.jpg" srcset="https://live.staticflickr.com/5819/23506499345_b0a448c20a_b.jpg 1024w, https://live.staticflickr.com/5819/23506499345_b0a448c20a.jpg 400w" /></a></td> </tr> <tr markdown='1' class='gallery-caption-row'> <td class="gallery-caption col-1" width="50.0%">Vectrex console</td> <td class="gallery-caption col-2" width="50.0%">Vectrex electronics</td> <p></tr> </tbody></p> </table> <p>The <a href="/Vectrex">Vectrex</a> home game console has a nice large, sharp B&amp;W screen. It is fairly easy to disconnect the original motherboard from the analog CRT driver and route it to the outside of the case to allow a <a href="/V.st">v.st</a> board to be plugged in.</p> <p><a href="https://www.flickr.com/photos/osr/21612467670/lightbox"><img src="https://live.staticflickr.com/5798/21612467670_01f0281f7a_b.jpg" srcset="https://live.staticflickr.com/5798/21612467670_01f0281f7a_b.jpg 1024w, https://live.staticflickr.com/5798/21612467670_01f0281f7a.jpg 400w" /></a> The Vectrex has a somewhat slow magnetic deflection system, which prevents it from drawing as many vectors as the faster electrostatic displays. It is much larger, however, and also offers a Z-input that allows the brightness to be controller without varying the line drawing speed.</p> <h3 id="laser-projectors">Laser projectors</h3> <p><a href="https://www.flickr.com/photos/osr/22617489506/lightbox"><img src="https://live.staticflickr.com/5752/22617489506_8e1aa5bcb6_b.jpg" srcset="https://live.staticflickr.com/5752/22617489506_8e1aa5bcb6_b.jpg 1024w, https://live.staticflickr.com/5752/22617489506_8e1aa5bcb6.jpg 400w" /></a> You can use a laser projector as well, but the results are really suboptimal. The physical mirrors have quite a bit of inertia and turning the beam on and off requires time. The refresh rates tend to be low and the images very flickery. Some specialized games might work with very fast (45-60Kpps) galvos, but most arcade games required too many vectors.</p> <p><center><img src="https://j.gifs.com/Z641BR.gif"/></center> The <a href="https://www.youtube.com/watch?v=qs8supdRtXQ">LazyMame</a> project appeared to be making good progress, but I can't find any details or source code since 2008. <a href="https://github.com/jv4779/openlase-mame">OpenLase-Mame</a> had some development in 2013, but nothing for three years. Other people have tried a <a href="https://www.youtube.com/watch?v=fUtwpOoWUvM#t=40s">custom Unity plugin to create new laser games</a>, with some success.</p> <h2 id="mame">MAME</h2> <p><center><img src="http://mamedev.org/_include/img/logo-mame.png" width=500/></center></p> <p><a href="http://mamedev.org/">MAME</a> is the Multiple Arcade Machine Emulator and it really lives up to its name: it can emulate thousands of games and cabinets, including nearly every vector arcade game ever made.</p> <h3 id="emulating-vector-displays">Emulating Vector Displays</h3> <table class="gallery"> <tbody markdown='1'> <tr> <td class="gallery-image col-1" width="50.0%"><a href="https://www.flickr.com/photos/osr/23112357710/lightbox"><img src="https://live.staticflickr.com/5799/23112357710_f1a5bcd3f6.jpg" srcset="https://live.staticflickr.com/5799/23112357710_f1a5bcd3f6_b.jpg 1024w, https://live.staticflickr.com/5799/23112357710_f1a5bcd3f6.jpg 400w" /></a></td> <td class="gallery-image col-2" width="50.0%"><img alt="" src="/images/Tempest_MAME_HLSL.png" /></td> </tr> <tr markdown='1' class='gallery-caption-row'> <td class="gallery-caption col-1" width="50.0%">Actual vector display highlights</td> <td class="gallery-caption col-2" width="50.0%">Emulated vector bloom</td> <p></tr> </tbody></p> </table> <p>The "bloom" effect caused by the bright vector lines is one of the features that is most desired by game players. MAME has support for HLSL shaders that blur the bright lines and creates an approximation of the effect. On the left you can see a real Vectrex display and on the right MAME's emulation of a similar effect.</p> <h3 id="patches-for-head">Patches for head</h3> <p><a href="https://www.flickr.com/photos/osr/22989285539/lightbox"><img src="https://live.staticflickr.com/5705/22989285539_79ab4e4d87_b.jpg" srcset="https://live.staticflickr.com/5705/22989285539_79ab4e4d87_b.jpg 1024w, https://live.staticflickr.com/5705/22989285539_79ab4e4d87.jpg 400w" /></a> Unfortunately <a href="https://github.com/mamedev/mame/pull/483">my patch to add support for exporting the vectors</a> to MAME was closed as "<em>an unacceptably hacky way to achieve the intended result</em>". Instead you'll need to clone my tree and follow my <a href="/MAME">instructions on building vector MAME</a>. The majority of the changes are in <code>src/emu/video/vector.cpp</code> and take advantage of the clipping windows that MAME is using to limit the vectors to the onscreen area.</p> <h3 id="patches-for-raspberry-pi">Patches for Raspberry Pi</h3> <p><a href="https://www.flickr.com/photos/osr/23357406086/lightbox"><img src="https://live.staticflickr.com/730/23357406086_23c1c5c5be_b.jpg" srcset="https://live.staticflickr.com/730/23357406086_23c1c5c5be_b.jpg 1024w, https://live.staticflickr.com/730/23357406086_23c1c5c5be.jpg 400w" /></a> I've also ported the changes to the stripped-down MAME4AllPi build for the Raspberry Pi. The <a href="/MAME">instructions for Pi vector MAME</a> are similar; you'll need to clone my tree and build it on the Pi. There are quite a few issues that need to be fixed related to joysticks unfortunately.</p> <h3 id="playing-games">Playing games</h3> <p><a href="https://www.flickr.com/photos/osr/23480319755/lightbox"><img src="https://live.staticflickr.com/5713/23480319755_60a689b141_b.jpg" srcset="https://live.staticflickr.com/5713/23480319755_60a689b141_b.jpg 1024w, https://live.staticflickr.com/5713/23480319755_60a689b141.jpg 400w" /></a> You can play one of the original arcade games, <a href="https://en.wikipedia.org/wiki/Space Wars">Space Wars</a> from 1977.</p> <p><a href="https://www.flickr.com/photos/osr/23456025006/lightbox"><img src="https://live.staticflickr.com/588/23456025006_226840d851_b.jpg" srcset="https://live.staticflickr.com/588/23456025006_226840d851_b.jpg 1024w, https://live.staticflickr.com/588/23456025006_226840d851.jpg 400w" /></a> <a href="/Asteroids">Asteroids</a> (1979) is always popular as well. One of the highest grossing games of its era!</p> <table class="gallery"> <tbody markdown='1'> <tr> <td class="gallery-image col-1" width="50.0%"><a href="https://www.flickr.com/photos/osr/22463151880/lightbox"><img src="https://live.staticflickr.com/5624/22463151880_39785a5166.jpg" srcset="https://live.staticflickr.com/5624/22463151880_39785a5166_b.jpg 1024w, https://live.staticflickr.com/5624/22463151880_39785a5166.jpg 400w" /></a></td> <td class="gallery-image col-2" width="50.0%"><img src="http://49.media.tumblr.com/6a63feaa8eeb6480e7ca590f346f6a4f/tumblr_nx3xmsocpa1s6w6q7o1_500.gif" /></td> </tr> <tr markdown='1' class='gallery-caption-row'> <td class="gallery-caption col-1" width="50.0%">Lunar Lander on a vector scope</td> <td class="gallery-caption col-2" width="50.0%">Tempest on a vector scope</td> <p></tr> </tbody></p> </table> <p>Or perhaps <a href="/Lunar_Lander">Lunar Lander</a> (1978) and <a href="https://en.wikipedia.org/wiki/Tempest (video game)">Tempest</a> (1980) are more your speed.</p> <p><center><img src="https://pbs.twimg.com/media/CVb4_EaU8AApQbr.png" width=500 /></center> There are lots of vector games to emulate. All of the ones in <a href="/Atari_games">Atari games</a> are there.</p> <p><center><img src="https://pbs.twimg.com/media/CVb2fA4UEAAMOWV.png" width=500 /></center> So many obscure games! I can't name them all, but have collected the list of <a href="/Vectrex_games">Vectrex games</a> as well as all of the <a href="/Vector_games">vector arcade games</a> listed on Wikipedia.</p> <h2 id="taking-it-further">Taking it further</h2> <h3 id="custom-input-devices">Custom input devices</h3> <table class="gallery"> <tbody markdown='1'> <tr> <td class="gallery-image col-1" width="50.0%"><a href="https://www.flickr.com/photos/osr/8097704769/lightbox"><img src="https://live.staticflickr.com/8054/8097704769_13a20500a2.jpg" srcset="https://live.staticflickr.com/8054/8097704769_13a20500a2_b.jpg 1024w, https://live.staticflickr.com/8054/8097704769_13a20500a2.jpg 400w" /></a></td> <td class="gallery-image col-2" width="50.0%"><img src="http://41.media.tumblr.com/8e98be81fc3cb490c4eacc25128c39be/tumblr_nomjugpsCH1qboq3po1_1280.jpg" /></td> </tr> <tr markdown='1' class='gallery-caption-row'> <td class="gallery-caption col-1" width="50.0%">Custom two joystick Robotron console</td> <td class="gallery-caption col-2" width="50.0%">Roboton</td> <p></tr> </tbody></p> </table> <p>Once you have your vector display hooked up the MAME, you'll probably want to take it to the next level. It is fairly easy to build custom USB HID joysticks using <a href="https://www.adafruit.com/products/480">Adafruit arcade joysticks</a>, <a href="https://www.adafruit.com/categories/235">buttons</a> and even <a href="https://www.adafruit.com/products/787">coin acceptors</a>.</p> <p><center><img src="http://timbartlett.net/wp-content/uploads/2013/08/AsteroidsPi_beauty-500x333.jpg"/></center></p> <p>Tim Bartlett's <a href="http://timbartlett.net/asteroids-pi/">Raspberry Pi Asteroids console</a> looks great and he has published all of the design files if you want to build your own.</p> <table class="gallery"> <tbody markdown='1'> <tr> <td class="gallery-image col-1" width="50.0%"><img src="http://www.e-basteln.de/asteroids/img/start_1.jpg" width=250/></td> <td class="gallery-image col-2" width="50.0%"><img src="http://www.e-basteln.de/asteroids/img/start_2.jpg" width=250/></td> </tr> <tr markdown='1' class='gallery-caption-row'> <td class="gallery-caption col-1" width="50.0%"></td> <td class="gallery-caption col-2" width="50.0%"></td> <p></tr> </tbody></p> </table> <p>Juergen Mueller build a marvelous <a href="http://www.e-basteln.de/asteroids/asteroids_intro.html">Asteroids cabinet with Vectrex display</a> that uses a real Asteroids logicboard, which is just above and beyond.</p> <h3 id="creative-coding-with-vectors">Creative coding with vectors</h3> <p><a href="https://www.flickr.com/photos/osr/23205125676/lightbox"><img src="https://live.staticflickr.com/5813/23205125676_866279280d_b.jpg" srcset="https://live.staticflickr.com/5813/23205125676_866279280d_b.jpg 1024w, https://live.staticflickr.com/5813/23205125676_866279280d.jpg 400w" /></a> If you're tired of playing games, you can always turn the display into a <a href="/Vectorscope_clock">Scope Clock</a>. The Teensy 3 has through-holes for a 32.768KHz clock crystal and backup battery that lets it keep decent time.</p> <p><center><img src="https://j.gifs.com/9rrljB.gif"/></center> You can write games that run directly on the Teensy, like <a href="/Space_Rocks">Space Rocks</a>, my Asteroids clone, or art projects like my <a href="/Twitter_Oscilloscope">Twitter Oscilloscope</a>.</p> <p><a href="https://www.flickr.com/photos/osr/21770280299/lightbox"><img src="https://live.staticflickr.com/5649/21770280299_9c8f2695de_b.jpg" srcset="https://live.staticflickr.com/5649/21770280299_9c8f2695de_b.jpg 1024w, https://live.staticflickr.com/5649/21770280299_9c8f2695de.jpg 400w" /></a> Some folks are really taking it to the next level -- <a href="http://vec9.com/">vec9</a> is the first full-scale vector arcade game in decades and has a custom cabinet with a real tank controller.</p> <table class="gallery"> <tbody markdown='1'> <tr> <td class="gallery-image col-1" width="50.0%"><img src="https://45.media.tumblr.com/fccaf308c201864d13cb004015d80d5e/tumblr_nzkm55LUNU1qju2zso1_400.gif"/></td> <td class="gallery-image col-2" width="50.0%"><img src="https://j.gifs.com/YEE2ZM.gif"/></td> </tr> <tr markdown='1' class='gallery-caption-row'> <td class="gallery-caption col-1" width="50.0%"></td> <td class="gallery-caption col-2" width="50.0%"></td> <p></tr> </tbody></p> </table> <p>We've written a simple Processing library to show how to write things that interact with the displays. Sample code is at <a href="https://github.com/osresearch/vst/tree/master/processingDemo">vst/processingDemo</a> and also available as ProcessingJS, demoed in <a href="/Swarm">Swarm</a> and <a href="/Random_Walk">Random Walk</a>.</p> <p><a href="https://www.flickr.com/photos/osr/16150684179/lightbox"><img src="https://live.staticflickr.com/7554/16150684179_6e54fd43c1_b.jpg" srcset="https://live.staticflickr.com/7554/16150684179_6e54fd43c1_b.jpg 1024w, https://live.staticflickr.com/7554/16150684179_6e54fd43c1.jpg 400w" /></a> If this is of interest to you we'll be having a class at NYC Resistor in collaboration with Code Liberation and an exhibition at <a href="http://babycastles.com/">Baby Castles</a> in early 2016.</p> <h3 id="more-info">More info</h3> <p><a href="https://www.flickr.com/photos/osr/21794745448/lightbox"><img src="https://live.staticflickr.com/711/21794745448_0878485ab0_b.jpg" srcset="https://live.staticflickr.com/711/21794745448_0878485ab0_b.jpg 1024w, https://live.staticflickr.com/711/21794745448_0878485ab0.jpg 400w" /></a> More info on the boards is at <a href="/Http://v.st/_v.st">http://v.st/ v.st</a>, <a href="/MAME">MAME</a>, <a href="/Vectrex">Vectrex</a> and <a href="/Tek_1720">Tek 1720</a>. Thanks for coming to our talk!</p> <p><center><img src="http://49.media.tumblr.com/eb1b87d8c0fa74806536ed784c818357/tumblr_nvs442adgJ1qju2zso1_250.gif"/></center></p> <p><a href="/Category:2015"><span style='color:white; background-color:red'>2015</a> <a href="/Category:Vector_display"><span style='color:white; background-color:red'>Vector display</a> <a href="/Category:Talks"><span style='color:white; background-color:red'>Talks</a> <a href="/Category:Games"><span style='color:white; background-color:red'>Games</a> <a href="/Category:CCC"><span style='color:white; background-color:red'>CCC</a></p> <hr> <div class="md-source-file"> <small> Last update: <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date">December 22, 2020</span> </small> </div> </article> </div> </div> </main> <footer class="md-footer"> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class="md-copyright"> Made with <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener"> Material for MkDocs </a> </div> <div class="md-social"> <a href="https://twitter.com/qrs" target="_blank" rel="noopener" title="twitter.com" class="md-social__link"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M459.37 151.716c.325 4.548.325 9.097.325 13.645 0 138.72-105.583 298.558-298.558 298.558-59.452 0-114.68-17.219-161.137-47.106 8.447.974 16.568 1.299 25.34 1.299 49.055 0 94.213-16.568 130.274-44.832-46.132-.975-84.792-31.188-98.112-72.772 6.498.974 12.995 1.624 19.818 1.624 9.421 0 18.843-1.3 27.614-3.573-48.081-9.747-84.143-51.98-84.143-102.985v-1.299c13.969 7.797 30.214 12.67 47.431 13.319-28.264-18.843-46.781-51.005-46.781-87.391 0-19.492 5.197-37.36 14.294-52.954 51.655 63.675 129.3 105.258 216.365 109.807-1.624-7.797-2.599-15.918-2.599-24.04 0-57.828 46.782-104.934 104.934-104.934 30.213 0 57.502 12.67 76.67 33.137 23.715-4.548 46.456-13.32 66.599-25.34-7.798 24.366-24.366 44.833-46.132 57.827 21.117-2.273 41.584-8.122 60.426-16.243-14.292 20.791-32.161 39.308-52.628 54.253z"/></svg> </a> <a href="https://flickr.com/osr" target="_blank" rel="noopener" title="flickr.com" class="md-social__link"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM144.5 319c-35.1 0-63.5-28.4-63.5-63.5s28.4-63.5 63.5-63.5 63.5 28.4 63.5 63.5-28.4 63.5-63.5 63.5zm159 0c-35.1 0-63.5-28.4-63.5-63.5s28.4-63.5 63.5-63.5 63.5 28.4 63.5 63.5-28.4 63.5-63.5 63.5z"/></svg> </a> <a href="https://github.com/osresearch" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"/></svg> </a> <a href="https://social.v.st/@th" target="_blank" rel="noopener" title="social.v.st" class="md-social__link"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M433 179.11c0-97.2-63.71-125.7-63.71-125.7-62.52-28.7-228.56-28.4-290.48 0 0 0-63.72 28.5-63.72 125.7 0 115.7-6.6 259.4 105.63 289.1 40.51 10.7 75.32 13 103.33 11.4 50.81-2.8 79.32-18.1 79.32-18.1l-1.7-36.9s-36.31 11.4-77.12 10.1c-40.41-1.4-83-4.4-89.63-54a102.54 102.54 0 0 1-.9-13.9c85.63 20.9 158.65 9.1 178.75 6.7 56.12-6.7 105-41.3 111.23-72.9 9.8-49.8 9-121.5 9-121.5zm-75.12 125.2h-46.63v-114.2c0-49.7-64-51.6-64 6.9v62.5h-46.33V197c0-58.5-64-56.6-64-6.9v114.2H90.19c0-122.1-5.2-147.9 18.41-175 25.9-28.9 79.82-30.8 103.83 6.1l11.6 19.5 11.6-19.5c24.11-37.1 78.12-34.8 103.83-6.1 23.71 27.3 18.4 53 18.4 175z"/></svg> </a> </div> </div> </div> </footer> </div> <div class="md-dialog" data-md-component="dialog"> <div class="md-dialog__inner md-typeset"></div> </div> <script id="__config" type="application/json">{"base": "..", "features": [], "search": "../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script> <script src="../assets/javascripts/bundle.51d95adb.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js?config=TeX-MML-AM_CHTML"></script> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10