<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://www.alexthissen.nl/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"><channel><title>Home of Alex Thissen</title><link>http://www.alexthissen.nl/blogs/</link><description>&lt;P&gt;All of the things I like to share&lt;/P&gt;</description><dc:language>en-US</dc:language><generator>CommunityServer 2008.5 SP1 (Build: 31106.3070)</generator><item><title>Programming tutorial: Part 1–Getting Started</title><link>http://www.alexthissen.nl/blogs/atarilynx/archive/2012/04/06/atari-lynx-game-programming-tutorial-part-1-getting-started.aspx</link><pubDate>Thu, 05 Apr 2012 22:02:48 GMT</pubDate><guid isPermaLink="false">badf6229-ffeb-484a-8c5a-fc9c9987c8f2:22591</guid><dc:creator>Alex Thissen</dc:creator><slash:comments>0</slash:comments><description>&lt;h1&gt;Atari Lynx programming tutorial series:&lt;/h1&gt;  &lt;ul&gt;   &lt;li&gt;Part 1: Getting started&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;So, you want to develop a game or program for the Atari Lynx, right? Well, join me on my journey to learn how to program for this game console. This tutorial series will be expanded and updated as my knowledge of the platform grows, when feedback from the community is given. Some things in this tutorial might be wrong. Let me know and help grow this tutorial, so people can benefit from it.&lt;/p&gt;  &lt;p&gt;I will write this so others can also start developing games. At this point in time I think I will use a set of helloworld-ish samples to explain concepts, but also build a real game to explore the various aspects of Lynx game development. This means that I am not sure how the tutorials will be structured. I anticipate that they will be like living documents that grow and get better content over time.&lt;/p&gt;  &lt;h2&gt;The ingredients for a game&lt;/h2&gt;  &lt;p&gt;These are the things you will need to build, test and run your game for the Atari Lynx:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;The actual hardware of an Atari Lynx device&lt;/li&gt;    &lt;li&gt;A programmable cartridge onto which you can transfer the game and test it in the real Lynx&lt;/li&gt;    &lt;li&gt;An emulator to make dry runs without needing the hardware and the time to transfer and test a cartridge&lt;/li&gt;    &lt;li&gt;A development environment that can produce the correct 65SC02 code that the Lynx console can run&lt;/li&gt;    &lt;li&gt;The idea for a game&lt;/li&gt;    &lt;li&gt;Basic understanding of programming&lt;/li&gt;    &lt;li&gt;Dedication, patience and perseverance&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Let’s briefly look at each one of these.&lt;/p&gt;  &lt;h3&gt;Actual Atari Lynx device&lt;/h3&gt;  &lt;p&gt;You probably have one already. Why else would you want to write a game for this device? If not, there are plenty of Lynx console to be bought in your neighborhood or on the Internet. &lt;a href="http://www.ebay.com" target="_blank"&gt;Ebay&lt;/a&gt; is probably a good place to start if no one around you has one for you. &lt;/p&gt;  &lt;p&gt;&lt;img border="0" alt="" src="http://vorming.minatica.be/Games/Specials/Handhelds/atarilynxns6.jpg" width="240" height="223" /&gt;&lt;/p&gt;  &lt;p&gt;There is no particular preference for the Atari Lynx Mark I (Classic) or II model. The games should run on both. The most noticeable difference in the hardware is the support for stereo in the Lynx II, where the Lynx I only has mono sound. The form factors are different as well. Here, there is a slight bias towards the Lynx II, because it has an open cartridge slot that allows for easy insertion of odd-shaped cartridges. This will help with the flashable cartridges as well (see later).&lt;/p&gt;  &lt;h3&gt;A programmable cartridge &lt;/h3&gt;  &lt;p&gt;There are a couple of ways to get a game binary image onto a cartridge. One of them is an EEPROM-burner. I have seen these out there. Or you can use the Flashcart by Karri Kaksonen. My personal favorite is the &lt;a href="http://www.atariage.com/forums/topic/159711-flashcard-information-and-news/" target="_blank"&gt;FlashCard&lt;/a&gt; by Lynxman. I own one and have used it extensively to try my games on a real Lynx device. Works like a charm and it is highly recommended. It’s affordable. Check with Lynxman for availability and pricing. Make sure you have a Lynx II or are willing to remove the cartridge bay door of your Lynx I.&lt;/p&gt;  &lt;p&gt;&lt;img src="http://www.atariage.com/forums/uploads/av-12435.jpg" alt="" /&gt;&lt;/p&gt;  &lt;h3&gt;Emulator to quickly test a game&lt;/h3&gt;  &lt;p&gt;There are two main emulators out there:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&lt;a href="http://sourceforge.net/projects/handy/files/handy/Handy%200.95/" target="_blank"&gt;Handy&lt;/a&gt; (with incarnations for about every platform and device)      &lt;br /&gt;      &lt;br /&gt;&lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/image_5F00_38007CC0.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/image_5F00_thumb_5F00_059CA941.png" width="334" height="260" /&gt;&lt;/a&gt;      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://mednafen.sourceforge.net/" target="_blank"&gt;Mednafen&lt;/a&gt; (Multi-system emulator based of Handy source code with improvements)      &lt;br /&gt;      &lt;br /&gt;&amp;#160;&lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/image_5F00_44FA5CD1.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/image_5F00_thumb_5F00_55FE8AB4.png" width="383" height="260" /&gt;&lt;/a&gt;&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;I have always used Handy, but recently found that Mednafen has flawless sound support. It is a bit trickier to use (command-line based), but is well worth checking out.   &lt;br /&gt;When you choose Handy, do pick the &lt;a href="http://sourceforge.net/projects/handy/files/handy/Handy%200.95/Handy-Development-0.95.zip/download" target="_blank"&gt;Developer&lt;/a&gt; version, as it includes debugging support and has more features. Pick up the &lt;a href="http://sourceforge.net/projects/handy/files/handy/Handy%200.95/Handy-win32src-0.95.zip/download" target="_blank"&gt;source code&lt;/a&gt; for the emulator as well, which is for the developer version. I have written a blog article on &lt;a href="http://www.alexthissen.nl/blogs/atarilynx/archive/2011/06/20/compiling-handy-0-95-for-windows.aspx" target="_blank"&gt;how to compile the source for Handy on Visual Studio 2010&lt;/a&gt;.&lt;/p&gt;  &lt;h3&gt;Development environment for building 65SC02 code&lt;/h3&gt;  &lt;p&gt;In my book a development environment encompasses everything that you need to build games. This ranges from your operating system, to tooling and documentation.&lt;/p&gt;  &lt;p&gt;You have got the operating system taken care of already. How else would you be browsing this page? I cannot judge whether this will be the OS for game development of your choice. I know that it is possible to get a working and productive environment for Windows and Linux and not so sure for MacOS. Everything else will have slimmer chances. If you use one of the first two then your in luck. Otherwise you might need to switch. My operating system is Windows, and have nothing against the others. However, I do focus on Windows and Microsoft technology. I will not compare this with other operating systems and manufacturers thereof. You be the judge of what is better.&lt;/p&gt;  &lt;p&gt;My list of things for the Atari Lynx development environment:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Documentation&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;Epyx developer documentation for Lynx.       &lt;br /&gt;Available &lt;a href="http://www.monlynx.de/lynx/lynxdoc.html" target="_blank"&gt;online&lt;/a&gt; from Bastian Schick’s website or as a set of scanned TIFF images from &lt;a href="http://www.atariage.com/" target="_blank"&gt;Atari Age&lt;/a&gt; at the &lt;a href="http://www.atariage.com/Lynx/archives/developer_docs/index.html?SystemID=LYNX" target="_blank"&gt;Lynx Archive&lt;/a&gt;.&lt;/li&gt;      &lt;li&gt;Atari Age &lt;a href="http://www.atariage.com/forums/forum/53-atari-lynx-programming/" target="_blank"&gt;Atari Lynx programming forum&lt;/a&gt;&lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;Tooling&lt;/li&gt;    &lt;ol&gt;     &lt;li&gt;Compiler, assembler and linker for 65SC02 source code&lt;/li&gt;      &lt;li&gt;Text editor and/or GUI for source code and resource files&lt;/li&gt;      &lt;li&gt;Framework specifically for creating Atari Lynx games&lt;/li&gt;   &lt;/ol&gt; &lt;/ol&gt;  &lt;p&gt;We’ll get into each of the tooling later on.&lt;/p&gt;  &lt;h3&gt;The idea for a game&lt;/h3&gt;  &lt;p&gt;Surely, to develop a game you will need to have an idea of what the game is like. That is not what this tutorial is about. It is meant to give you the knowledge on how to use the platform, hardware, tooling and programming environment to accomplish writing a game. As far as the game is concerned: that is your idea mixed with the things in this tutorial.&lt;/p&gt;  &lt;h3&gt;Basic understanding of programming&lt;/h3&gt;  &lt;p&gt;There are so many books, internet sites, people, training companies and schools out there that can teach you how to program, it’s not even funny anymore. If you are not comfortable writing code and haven’t got your head around it yet, this tutorial might not be for you. I do assume you have programming experience and skills. Then again, reading this might help you learn more about programming. You’ll notice if it can help you develop your skills. For me, it has been very educational to program in a low level way, instead of the high level languages and frameworks that I use every day.&lt;/p&gt;  &lt;h1&gt;&lt;/h1&gt;  &lt;h3&gt;Dedication, patience and perseverance&lt;/h3&gt;  &lt;p&gt;Being a developer of software can be a very rewarding task. Whether it is monetary gain, or personal satisfaction of solving a problem or completing a game, for everyone there is something to be had from developing. If there isn’t you should really reconsider starting development or being a developer. &lt;/p&gt;  &lt;p&gt;But, the other side of the medal is that there will almost certainly be moments where things get tough. You might not get the results you want, or not as quickly as you’d like. There will be bugs in your code that you need to hunt down and fix. There is not as much documentation as you will need and the developer community is small to say the least. You have been warned and should be prepared to deal with this. On the upside, take a look at the fun games that the homebrew community of the Atari Lynx has developed the past couple of years. And I must say after having spent a couple of evenings experimenting: it is really fun to program for the Lynx. Amazing what this little console can do. Little code, big results. I am enthusiastic. I hope you are too.&lt;/p&gt;  &lt;h2&gt;&lt;/h2&gt;  &lt;h2&gt;From this point on&lt;/h2&gt;  &lt;p&gt;This first part has not a whole lot to do with programming yet. But we’ll take it step by step. The next part will cover the various tools that you will need and could use. We’ll discuss the compilers, editors and frameworks. So, stay tuned for more on the Atari Lynx programming tutorial.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.alexthissen.nl/aggbug.aspx?PostID=22591" width="1" height="1"&gt;</description></item><item><title>Working from Visual Studio 2010 for Vectrex programs</title><link>http://www.alexthissen.nl/blogs/vectrex/archive/2012/02/23/working-from-visual-studio-2010-for-vectrex-programs.aspx</link><pubDate>Thu, 23 Feb 2012 06:10:28 GMT</pubDate><guid isPermaLink="false">badf6229-ffeb-484a-8c5a-fc9c9987c8f2:22590</guid><dc:creator>Alex Thissen</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;For many years I’ve been working with Visual Studio as my main development IDE. I’ve seen many incarnations, since Visual C++ 2.0, through VC++ 2.1, 2.2, 4.0-4.2 and from there also Visual Basic 5.0, 6.0, and Visual Studio.NET, 2003, Visual Studio 2005, 2008 and now Visual Studio 2010 with “Dev11” gleaning at the horizon. Knowing your development thoroughly is a great advantage. I ‘d rather not go back to other editors and/or environments. &lt;/p&gt;  &lt;p&gt;That’s why I have created a Makefile project for Visual C++ and hooked up the AS09 compiler for 6809 code.&lt;/p&gt;  &lt;h2&gt;Preparing the project&lt;/h2&gt;  &lt;p&gt;You will need to download Visual C++ 2010 Express to do this. If you’re spoiled like me, you might just have a paid version of Visual Studio 2010, which should include Visual C++.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vectrex/image_5F00_770293E1.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vectrex/image_5F00_thumb_5F00_2483B3A5.png" width="700" height="262" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;After choosing the Makefile project you can choose a filename for your project. I have named it HelloWorld&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vectrex/image_5F00_44328D6D.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vectrex/image_5F00_thumb_5F00_3D1350F5.png" width="433" height="94" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;A wizard will start that allows you to enter lots of information. Simply press Finish, as you can set this up in another dialog (with some more space for editing).&lt;/p&gt;  &lt;p&gt;At the Solution Explorer, you will see the new HelloWorld project. Right-click it and choose Properties. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vectrex/image_5F00_63E16735.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vectrex/image_5F00_thumb_5F00_1C8C1143.png" width="848" height="332" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Go to the Configuration Properties, NMake at the left tree and fill the three command-lines with the following:&lt;/p&gt;  &lt;p&gt;&lt;font face="Consolas"&gt;&amp;quot;C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\nmake.exe&amp;quot; /f hello.mak BUILD=Debug all      &lt;br /&gt;&amp;quot;C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\nmake.exe&amp;quot; /f hello.mak BUILD=Debug all       &lt;br /&gt;&amp;quot;C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\nmake.exe&amp;quot; /f hello.mak BUILD=Debug clean&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;This means that we will have a hello.mak NMAKE file for our compiler to use. There will be two configurations for building, rebuilding (the same for now) and cleaning.&lt;/p&gt;  &lt;p&gt;Set the Output to hello.bin. That is the name of the file that we will be producing.&lt;/p&gt;  &lt;p&gt;Add a new text file “hello.mak” to the project. You will also need to include the hello.asm file in the root of the project. The result looks like this:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vectrex/image_5F00_4D3F18EE.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vectrex/image_5F00_thumb_5F00_1A6F127A.png" width="253" height="234" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h2&gt;Editing the make file&lt;/h2&gt;  &lt;p&gt;Open the hello.mak file and copy the following text in it:&lt;/p&gt;  &lt;pre&gt;.SOURCE :&amp;#160; &lt;br /&gt;.SUFFIXES : .asm .bin
 
AS=&amp;quot;C:\Program Files (x86)\AS09\AS09.exe&amp;quot;
ASFLAGS=-cgiv -h0
 
target = hello.bin
objects = hello.bin
 
.asm.bin:
	$(AS) $(ASFLAGS) -l$(BUILD)\$*.lst -o$(BUILD)\$@ $&amp;lt;
 
all: $(objects)
 
clean:
	del $(BUILD)\*.lst
	del $(BUILD)\*.dbg
	del $(BUILD)\$(target)&lt;/pre&gt;

&lt;h2&gt;Explaining the contents of the make file&lt;/h2&gt;

&lt;p&gt;Let’s take a short look at the individual elements.&lt;/p&gt;

&lt;p&gt;.SOURCE is not used, but indicates subdirectories where source code might be located. .SUFFIXES lists the extensions of files that while be recognized. &lt;/p&gt;

&lt;p&gt;AS is a shorthand macro for the compiler and the ASFLAGS for the compiler flags. &lt;/p&gt;

&lt;p&gt;The -cgiv flags means that the compiler will:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;output cycles counts per instruction (c flag, which is relevant in combination with the l flag)&lt;/li&gt;

  &lt;li&gt;generate debug information (in a separate .dbg file)&lt;/li&gt;

  &lt;li&gt;be case-insensitive&lt;/li&gt;

  &lt;li&gt;be verbose in its output&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The flag –h0 indicates infinite page length for the generated listing file hello.lst.&lt;/p&gt;

&lt;p&gt;Next are the target and objects, which indicate the thing we will produce (target) and which things (objects) are needed to create the target. In this simple case this is the same. More complex scenarios might have other objects accumulating into the target.&lt;/p&gt;

&lt;p&gt;The line .asm.bin: and the line after that is a inference rule that tells NMake how to create a .bin file from a .asm file. In this case it is accomplished by:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;$(AS) construct the compiler command&lt;/li&gt;

  &lt;li&gt;$(ASFLAGS) adds the flags to the command&lt;/li&gt;

  &lt;li&gt;with a listing flag –l at the location $(BUILD)\$*.lst
    &lt;br /&gt;The last part will expand to something like DEBUG\hello.lst, because the macro BUILD holds the current build configuration (DEBUG or RELEASE) and $* is the current file (from the rule) without an extension (so hello.asm becomes simple).&lt;/li&gt;

  &lt;li&gt;at the output $(BUILD)\$@ as specified by the –o flag
    &lt;br /&gt;This will expand to DEBUG\hello.bin, because $@ is the target of the rule (in this case the .bin that needs to be created)&lt;/li&gt;

  &lt;li&gt;with input file $&amp;lt; that holds the complete filename that is the lefthand side of the rule (hello.asm)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The final sections indicate the all and clean configurations. All is the build configuration that is used for both a normal Build and the Build All. Since we have only one project the two use the same “all” configuration. It will build all objects are indicated by the objects= line. The clean configuration will run three delete commands that get rid of all .lst, .dbg files and the target.&lt;/p&gt;

&lt;h2&gt;Building the solution&lt;/h2&gt;

&lt;p&gt;You can now build the project from the Build menu, Build Solution (shortcut is Ctrl+Shift+B). The makefile project will run the NMake utility and feed it the hello.mak file. plus the value “all” to build. The result should be something like this in the Output window:&lt;/p&gt;

&lt;p&gt;&lt;font face="Consolas"&gt;1&amp;gt;&amp;#160; Microsoft (R) Program Maintenance Utility Version 10.00.30319.01
    &lt;br /&gt;1&amp;gt;&amp;#160; Copyright (C) Microsoft Corporation.&amp;#160; All rights reserved.

    &lt;br /&gt;1&amp;gt;&amp;#160; &lt;br /&gt;1&amp;gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;quot;C:\Program Files (x86)\AS09\AS09.exe&amp;quot; -cgiv -h0 -lDebug\hello.lst -oDebug\hello.bin hello.asm

    &lt;br /&gt;1&amp;gt;&amp;#160; AS09 Assembler for M6809 [1.42].&amp;#160; Copyright 1994-2007, Frank A. Kingswood

    &lt;br /&gt;1&amp;gt;&amp;#160; &lt;br /&gt;1&amp;gt;&amp;#160; Optimization enabled.

    &lt;br /&gt;1&amp;gt;&amp;#160; Pass 1.

    &lt;br /&gt;1&amp;gt;&amp;#160; 20 lines read, no errors in pass 1.

    &lt;br /&gt;1&amp;gt;&amp;#160; Pass 2.

    &lt;br /&gt;1&amp;gt;&amp;#160; No errors in pass 2.

    &lt;br /&gt;1&amp;gt;&amp;#160; Checking binary file boundaries.

    &lt;br /&gt;1&amp;gt;&amp;#160; Writing binary file &amp;quot;Debug\hello.bin&amp;quot;.

    &lt;br /&gt;1&amp;gt;&amp;#160; Wrote binary from address $0000 through $0022.

    &lt;br /&gt;1&amp;gt;&amp;#160; Total size 35 bytes.

    &lt;br /&gt;1&amp;gt;&amp;#160; &lt;br /&gt;1&amp;gt;&amp;#160; Reading from file &amp;quot;hello.asm&amp;quot;

    &lt;br /&gt;1&amp;gt;&amp;#160; &lt;br /&gt;1&amp;gt;&amp;#160; Reading from file &amp;quot;hello.asm&amp;quot;

    &lt;br /&gt;========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========&lt;/font&gt;&lt;/p&gt;

&lt;p&gt;Clicking the Show All Files button at the top of the Solution Explorer reveals the contents of the Debug folder:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vectrex/image_5F00_21221BFD.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vectrex/image_5F00_thumb_5F00_60EC0282.png" width="249" height="245" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;where all output is located. Running Clean solution from the Build menu will get rid of the output of the build proces.&lt;/p&gt;

&lt;p&gt;More information can be found at the &lt;a href="http://msdn.microsoft.com/en-us/library/dd9y37ha(v=VS.80).aspx"&gt;MSDN website&lt;/a&gt;.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.alexthissen.nl/aggbug.aspx?PostID=22590" width="1" height="1"&gt;</description></item><item><title>Hello World with 6809 assembler language</title><link>http://www.alexthissen.nl/blogs/vectrex/archive/2012/02/22/understanding-the-6809-assembler-language.aspx</link><pubDate>Wed, 22 Feb 2012 17:25:00 GMT</pubDate><guid isPermaLink="false">badf6229-ffeb-484a-8c5a-fc9c9987c8f2:22589</guid><dc:creator>Alex Thissen</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;The first thing I did after finding the developer information is skim through the &lt;a href="http://homepage.ntlworld.com/pascual.nicholson/files/articles/Introduction%20to%20Vectrex%20Programming.pdf"&gt;Introductionary Tutorial&lt;/a&gt; by Christopher L. Tumbler. I want to get a feel for the assembly language, and the way the games for the Vectrex are created. At first glance the code for the 6809 seems reasonably close to the 6502. There are 16-bit registers and instructions that make use of those. Branching is possible with the relative short jump (plus or minus 127 offsets), but also long jumps which take an additional byte. &lt;/p&gt;
&lt;p&gt;The code for a typical Hello World program looks like this:&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Consolas;"&gt;&amp;nbsp; ORG $0000&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Consolas;"&gt;; Magic Init Block &lt;br /&gt;&amp;nbsp; FCB $67,$20 &lt;br /&gt;&amp;nbsp; FCC &amp;quot;GCE XXXX&amp;quot; &lt;br /&gt;&amp;nbsp; FCB $80 &lt;br /&gt;&amp;nbsp; FDB music &lt;br /&gt;&amp;nbsp; FDB $f850 &lt;br /&gt;&amp;nbsp; FDB $30b8 &lt;br /&gt;&amp;nbsp; FCC &amp;quot;SIMPLE&amp;quot; &lt;br /&gt;&amp;nbsp; FCB $80,$0&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Consolas;"&gt;start: &lt;br /&gt;&amp;nbsp; bra start&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Consolas;"&gt;music: &lt;br /&gt;&amp;nbsp; FDB $fee8 &lt;br /&gt;&amp;nbsp; FDB $feb6 &lt;br /&gt;&amp;nbsp; FCB $0,$80 &lt;br /&gt;&amp;nbsp; FCB $0,$80&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Notice the magic initialization block that is needed for a Vectrex program. The program loops infinitely and plays no music.&lt;/p&gt;
&lt;p&gt;I want to get this simple program to compile. So, I started searching for compilers:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.kingswood-consulting.co.uk/assemblers/as09_142.zip"&gt;AS09&lt;/a&gt; at &lt;a href="http://www.kingswood-consulting.co.uk/assemblers/" title="http://www.kingswood-consulting.co.uk/assemblers/"&gt;http://www.kingswood-consulting.co.uk/assemblers/&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://code.google.com/p/gcc6809/"&gt;GCC6809&lt;/a&gt; (C compiler for 6809, so not useful for this code fragment) &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I unpacked the AS09 1.42 compiler and copied the Simple.asm file (with the contents above) to the directory. &lt;br /&gt;Compile the source with:&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Consolas;"&gt;as09.exe simple.asm&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;As it seems the compiler has some issues with upper case mnemonics. Normally the &amp;ndash;i switch should make the compiler case-insensitive, but this doesn&amp;rsquo;t seem to happen. I&amp;rsquo;ve contacted Frank Kingswood about this. Changing the ORG, FCB, FCC and FDB to lower-case does the trick for now.&lt;/p&gt;
&lt;p&gt;The result of the compilation is a simple.bin binary file that you can run on an emulator like MESS. The syntax for running this is:&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Consolas;"&gt;mess64.exe vectrex &amp;ndash;cart roms\vectrex\simple.bin&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;where I have run this command from the command-line at the MESS root directory. My roms are stored in the subdirectory roms\vectrex. The required boot rom for Vectrex is also located in that folder.&lt;/p&gt;
&lt;p&gt;I have also stumbled on the &lt;a href="http://www.emix8.org/static.php?page=VectrexThrustSource"&gt;source code&lt;/a&gt; for &lt;a href="http://www.emix8.org/static.php?page=VectrexThrust"&gt;VecThrust&lt;/a&gt; at the website of Ville. This will be interesting later on.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.alexthissen.nl/aggbug.aspx?PostID=22589" width="1" height="1"&gt;</description></item><item><title>Scavenging the internet for Vectrex information</title><link>http://www.alexthissen.nl/blogs/vectrex/archive/2012/02/20/scavenging-the-internet-for-vectrex-information.aspx</link><pubDate>Mon, 20 Feb 2012 15:37:58 GMT</pubDate><guid isPermaLink="false">badf6229-ffeb-484a-8c5a-fc9c9987c8f2:22588</guid><dc:creator>Alex Thissen</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;These are the first interesting links that I found roaming the Internet:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&lt;a title="http://en.wikipedia.org/wiki/Vectrex" href="http://en.wikipedia.org/wiki/Vectrex"&gt;http://en.wikipedia.org/wiki/Vectrex&lt;/a&gt;      &lt;br /&gt;The Wikipedia page for the Vectrex. Has some history and tells about the working of the device and the 3D imager and light pen.&lt;/li&gt;    &lt;li&gt;&lt;a title="http://www.vectrex.biz/" href="http://www.vectrex.biz/"&gt;http://www.vectrex.biz/&lt;/a&gt;      &lt;br /&gt;Richard created the VecMulti and VecFlash cartridges. The first one seems to be able to host different kinds of cartridges, as it mentions 64K bank-switched games. Uses a Micro-SD card as the backing store.      &lt;br /&gt;&lt;img border="0" src="http://www.richard.hutchinson.dsl.pipex.com/VecMulti_label.jpg" width="331" height="188" alt="" /&gt;      &lt;br /&gt;The VecFlash is discontinued and seems a precursor to the VecMulti.&lt;/li&gt;    &lt;li&gt;&lt;a title="http://www.vectrex.co.uk/" href="http://www.vectrex.co.uk/"&gt;http://www.vectrex.co.uk/&lt;/a&gt;      &lt;br /&gt;Has information on the &lt;a href="http://homepage.ntlworld.com/pascual.nicholson/files/articles/VecDev%20developer&amp;#39;s%20cartridge%20v1-4.pdf"&gt;VecDev&lt;/a&gt; developer cartridge and some modifications like the resetting after uploading a game to the cartridge. Cartridge is supposed to be available from Vectrex.biz but it is not mentioned there I think.      &lt;br /&gt;Also, under Documents/Data sheets it has a lot of technical information on the electronics inside the Vectrex. Most importantly I found the Vectrex FAQ here, plus the programming manuals and a tutorial.&lt;/li&gt;    &lt;li&gt;Vectrex museum &lt;a title="http://www.vectrexmuseum.com/" href="http://www.vectrexmuseum.com/"&gt;http://www.vectrexmuseum.com/&lt;/a&gt;      &lt;br /&gt;Complete overview of the original, prototype and homebrew games. Interesting news section. Also has a section with &lt;a href="http://www.vectrexmuseum.com/share/coder/index.htm"&gt;programming documentation&lt;/a&gt;.&lt;/li&gt; &lt;/ol&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.alexthissen.nl/aggbug.aspx?PostID=22588" width="1" height="1"&gt;</description></item><item><title>A new thing</title><link>http://www.alexthissen.nl/blogs/vectrex/archive/2012/02/19/a-new-thing.aspx</link><pubDate>Sun, 19 Feb 2012 20:11:19 GMT</pubDate><guid isPermaLink="false">badf6229-ffeb-484a-8c5a-fc9c9987c8f2:22587</guid><dc:creator>Alex Thissen</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Time to try something new. I want to see if I can commit to write blog posts and keep some form of diary as I go about creating a blog on building a Vectrex emulator and maybe a game in the process. Usually I try to find out things on some topic and explore everything, but never get around to writing about it. I will try to do it the other way around. It’s an experiment, but it’s worth a shot. &lt;/p&gt;  &lt;p&gt;Initial goal formulation:&lt;/p&gt;  &lt;h3&gt;Create a modern Vectrex emulator for the managed .NET platform&lt;/h3&gt;  &lt;p&gt;&lt;img src="http://upload.wikimedia.org/wikipedia/commons/thumb/f/fb/Vectrex.jpg/270px-Vectrex.jpg" width="270" height="216" alt="" /&gt;&lt;/p&gt;  &lt;p&gt;So, with that said, time to do some initial high-level planning (aka lying) and summarize some things that need to be done.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Find general information on the Vectrex&lt;/li&gt;    &lt;li&gt;Find technical and developer information&lt;/li&gt;    &lt;li&gt;Find out what the technical components of the Vectrex are&lt;/li&gt;    &lt;li&gt;Understand the way the Vectrex works &lt;/li&gt;    &lt;li&gt;Understand the programming language for the CPU&lt;/li&gt;    &lt;li&gt;Understand the boot process&lt;/li&gt;    &lt;li&gt;Emulate CPU, memory and electronics for video&lt;/li&gt;    &lt;li&gt;Try to get visuals from the vector graphics&lt;/li&gt;    &lt;li&gt;Do the audio, controls and other hardware&lt;/li&gt;    &lt;li&gt;… (we’ll see where we stand when we get here)&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;To make this work I will try to brain dump instead of going for complete, error-free, correct, article-like writing. That means it will be a diary of progressing insights. You’ve been warned.&lt;/p&gt;  &lt;p&gt;On with the experiment.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.alexthissen.nl/aggbug.aspx?PostID=22587" width="1" height="1"&gt;</description></item><item><title>Revelations on Windows 8</title><link>http://www.alexthissen.nl/blogs/main/archive/2011/09/14/revelations-on-windows-8.aspx</link><pubDate>Wed, 14 Sep 2011 18:32:13 GMT</pubDate><guid isPermaLink="false">badf6229-ffeb-484a-8c5a-fc9c9987c8f2:22586</guid><dc:creator>Alex Thissen</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Today the //BUILD/Windows conference started with a day full of main sessions. A two and a half hour keynote followed by three “Big Picture” sessions after lunch introduced all present to the new Windows 8 OS and platform. Personally, I am still catching my breath over the amazing amount of information that was given to us. Lots of people have asked me since then what I thought of the first day. I have told them: “Fantastic”. Here’s why, in my words and with a personal interpretation of the information that is available to everyone.&lt;/p&gt;  &lt;h3&gt;Merging the web with Windows&lt;/h3&gt;  &lt;p&gt;What I saw Microsoft present today is the new vision for the Windows 8 operating system. Windows 8 merges with the web in terms of devices and applications. It also brings together all your devices and makes them a mesh that is constantly in sync with one another. This mainly goes for data, be it application data, application settings or identities. The Cloud (Windows Live in particular, complemented by Windows Azure) acts as the conduit to flow and store information across devices and online storage. &lt;/p&gt;  &lt;h3&gt;Web of applications&lt;/h3&gt;  &lt;p&gt;Equally important is the fact that all applications are not only interconnected with the OS and the cloud, but also with one another. Searching and exchanging data has become a smooth continuum across OS and applications alike. I like to think of it as a new opportunity to create Windows-based mashups, just like it has become common place for Web 2.0 applications. This style of creating applications will now come to native Windows applications. The possibilities will be endless. All you need to do is reimagine your apps, just like Microsoft has reimagined Windows.&lt;/p&gt;  &lt;h3&gt;A new family of applications&lt;/h3&gt;  &lt;p&gt;Windows 8 distinguishes two types of applications: Desktop apps and Metro style apps. The Desktop apps are best described as the applications that will run on earlier versions of Windows (7, Vista, …). The Desktop can be built using the well known variety of APIs, ranging from native Win32 in C/C++, to .NET or Silverlight with C# or VB and HTML with JavaScript for Internet Explorer hosted web applications. Metro style applications are easily identified from their styling. Behind that new appearance there is a whole new stack of frameworks and APIs to build and run applications. The Metro applications can interconnect with each other and the OS. There is deep integration through the new API.&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/main/IMAG2035_5F00_084BB6D8.jpg"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;margin:0px 10px 0px 0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="IMAG2035" border="0" alt="IMAG2035" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/main/IMAG2035_5F00_thumb_5F00_4F052A15.jpg" width="640" height="383" /&gt;&lt;/a&gt;&lt;/h3&gt;  &lt;h3&gt;Metro, great for users and developers&lt;/h3&gt;  &lt;p&gt;Metro applications use a new application model at system service level. This is the layer that runs on top of the Windows kernel. The application model also represents the way a Metro application lives in its eco-system, hooks into the operating system with its own execution environment and how it is packaged and deployed. On top of the app model you can build Metro apps with three new APIs: Data and Communication, Graphics and Media, Devices and Printers. You can choose from any kind programming interface, just like with the Desktop apps, boiling down to C++, managed languages and JavaScript. The first two use XAML to create the view layer. XAML has become a native part of the operating system.&lt;/p&gt;  &lt;p&gt;Whether you are going for the XAML or HTML5 approach, Metro apps have the same distinct look and feel, backed up with styling guidelines. The Visual Studio 2011 development environment embraces Metro and offers a whole slew of templates to facilitate in creating the right Metro views for your app.&lt;/p&gt;  &lt;p&gt;The Metro style will help users get a consistent feel across devices (desktop PC, tablet or phone) and form factors (small, medium, large). Whether they pick up a phone with WP7.5 or a tablet with Windows 8, it all looks and feels the same. For now, Metro style applications are built targeted at either Windows 8 or Phone 7.5&lt;/p&gt;  &lt;h3&gt;Opportunities for everyone&lt;/h3&gt;  &lt;p&gt;With all of this come great opportunities for everyone: users, designers, developers, architects and business, you name it. Since this is a developer conference, I would like to point out that the next couple of years will be very, very interesting for developers. The shift in programming paradigm from rich-client, high-end client applications to interconnected, cloud- and os-integrated applications are a new ball-game and a game changer to boot. This will give lots of change, chance and learning for all to enjoy. &lt;/p&gt;  &lt;h3&gt;The extra gift&lt;/h3&gt;  &lt;p&gt;As if all of this goodness and announcements weren’t enough there was the unexpected gift. Secretly anticipated and living up to speculation all attendees of //BUILD/Windows were giving a new Developer Preview Tablet: a Samsung tablet with amazing specs. The line for picking it up was unbelievable. I chose to wait until tomorrow to pick it up. I still need to do so. Everybody is excited about it. Check the specs to see why.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/main/image_5F00_13D14E4A.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/main/image_5F00_thumb_5F00_7B318B2C.png" width="244" height="160" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.alexthissen.nl/aggbug.aspx?PostID=22586" width="1" height="1"&gt;</description><category domain="http://www.alexthissen.nl/blogs/main/archive/tags/Conferences/default.aspx">Conferences</category><category domain="http://www.alexthissen.nl/blogs/main/archive/tags/Windows+OS/default.aspx">Windows OS</category></item><item><title>Getting ready to unwrap the big picture at BUILD</title><link>http://www.alexthissen.nl/blogs/main/archive/2011/09/13/getting-ready-to-unwrap-the-big-picture-at-build.aspx</link><pubDate>Tue, 13 Sep 2011 05:47:11 GMT</pubDate><guid isPermaLink="false">badf6229-ffeb-484a-8c5a-fc9c9987c8f2:22585</guid><dc:creator>Alex Thissen</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;&lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/main/IMAG2029_5F00_6CBD8A95.jpg"&gt;&lt;img style="background-image:none;border-right-width:0px;margin:0px 10px 0px 0px;padding-left:0px;padding-right:0px;display:inline;float:left;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="IMAG2029" border="0" alt="IMAG2029" align="left" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/main/IMAG2029_5F00_thumb_5F00_576F3953.jpg" width="190" height="114" /&gt;&lt;/a&gt;Tomorrow is the first day of the //BUILD/Windows conference. BUILD is a highly anticipated conference and expectations are equally high. I thought it would be good to put some of my thoughts on my blog before the conference actually started. You see, BUILD is special in a way that most conference of the past years have not been: we know nothing about the announcements. Sure, there will most likely be information on Windows 8, HTML 5 and JavaScript, the developer roadmap and so on. But then again, this is only high over. Nobody knows anything about what will be announced, not even the average Microsoft employee. &lt;/p&gt;  &lt;p&gt;The almost complete silence and accompanying secrecy is not what we have seen in the past couple of years. Microsoft has always been very open in its directions. The product teams have engaged with the community early on and gotten feedback from the developers, architects and so on. Now, we have heard nothing up front. And this leads to a lot of speculation, criticism, fear and doubt. People complain about this approach. Apple and Google have been working this way for a long time now. The big announcements and revelations are made on an important conference. So, how bad is it that Microsoft has taken the same path?&lt;/p&gt;  &lt;p&gt;Taking a step back I feel spoiled. All these years we have had the luxury of knowing all upfront. It is like Christmas time (or Sinterklaas if you are Dutch), where you sent out a wish list to Santa Claus. Santa would tell you exactly what you would get. The unwrapping of the presents was fun to do, but there were hardly any surprises. This time is different. Tomorrow we will be given a lot of presents and we do not know what is in the boxes. Everyone will be thrilled to receive the gifts and find out what is inside. Best of all, there might even be presents that we hadn’t wished for. I am enjoying every moment of it. Because once the unwrapping is done, the nervousness and anxiety goes away and is replaced with the fun of playing with the new stuff. Still good, but different. Who knows how long it will be before we will have the experience of not knowing again?&lt;/p&gt;  &lt;p&gt;The registration today went very smooth. It was not busy (yet). The self-service terminals made it easy to register. The badge, wristband (for the party on Wednesday) and booklet were all the things we got. There were no details on the sessions, other than that the first day will be general sessions only. These general sessions are called “Big picture” in the booklet. Sort of indicates what we will getting from those. The breakout sessions are from Wednesday till Friday. It will be four fantastic days without a doubt. I am looking forward to it! &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/main/IMAG2030_5F00_114E5673.jpg"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="IMAG2030" border="0" alt="IMAG2030" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/main/IMAG2030_5F00_thumb_5F00_5D55EEBA.jpg" width="415" height="249" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.alexthissen.nl/aggbug.aspx?PostID=22585" width="1" height="1"&gt;</description><category domain="http://www.alexthissen.nl/blogs/main/archive/tags/Conferences/default.aspx">Conferences</category><category domain="http://www.alexthissen.nl/blogs/main/archive/tags/Windows+OS/default.aspx">Windows OS</category></item><item><title>Dracula the Undead walkthrough</title><link>http://www.alexthissen.nl/blogs/atarilynx/archive/2011/07/19/dracula-the-undead-walkthrough.aspx</link><pubDate>Tue, 19 Jul 2011 06:50:00 GMT</pubDate><guid isPermaLink="false">badf6229-ffeb-484a-8c5a-fc9c9987c8f2:22583</guid><dc:creator>Alex Thissen</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Below follows the complete solution to the graphical adventure on your Lynx, Dracula &amp;ndash; The Undead. &lt;/p&gt;
&lt;p&gt;&lt;img height="240" width="194" src="http://www.atariage.com/Lynx/boxes/b_Dracula_front.jpg" align="left" alt="Dracula the Undead - Box Front" border="0" style="margin:0px 25px 0px 0px;display:inline;float:left;" /&gt;&lt;/p&gt;
&lt;p&gt;Included are all the possibilities of exploration available in the game. You need not go through the list of commands given below. Stick to the bold commands and only execute the others if you&amp;#39;re interested in seeing what happens. Omitted are the commands that result in remarks like &amp;#39;there&amp;#39;s nothing unusual about it.&amp;#39; or &amp;#39;I don&amp;#39;t think that&amp;#39;ll work&amp;#39;. Some are quite interesting (and that&amp;#39;s the main reason I included them), since they more or less show the path of exploration you might have followed solving the game yourself. For instance, when you first try and climb out of the window in Jonathan&amp;#39;s antechamber he doesn&amp;#39;t believe it possible, whereas when he has seen Dracula do it, he does climb out, convinced it can be done.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap24_5F00_69B23B1D.png"&gt;&lt;img height="154" width="240" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap24_5F00_thumb_5F00_6226CBB0.png" alt="snap24" border="0" title="snap24" style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" /&gt;&lt;/a&gt;&lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap33_5F00_68D9D533.png"&gt;&lt;img height="154" width="240" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap33_5F00_thumb_5F00_419F8BFE.png" alt="snap33" border="0" title="snap33" style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap55_5F00_081C7C07.png"&gt;&lt;img height="154" width="240" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap55_5F00_thumb_5F00_0ECF858A.png" alt="snap55" border="0" title="snap55" style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Use the map in combination with the italic headers. The headers give the name of the location where you should be or move to before trying any of the actions given below them. If you would want to finish the game as quickly as possible, you should only execute the commands printed in bold. &lt;/p&gt;
&lt;p&gt;A note of caution: if something happens, like an animation of some sort or a narration by Bram Stoker, and the list prompts you to &lt;b&gt;use notebook&lt;/b&gt;, make sure you execute no other command. If you do, you might not be able to finish the game victoriously. Sometimes, however, you might be lucky if you accidently execute a false command, because in some instances you can examine something again and then use the notebook (like at Dracula&amp;#39;s coffin or in his study).&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap64_5F00_554C7592.png"&gt;&lt;img height="154" width="240" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap64_5F00_thumb_5F00_2E122C5D.png" alt="snap64" border="0" title="snap64" style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap66_5F00_0D8AECAB.png"&gt;&lt;img height="154" width="240" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap66_5F00_thumb_5F00_7B4225E8.png" alt="snap66" border="0" title="snap66" style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap67_5F00_3F165A40.png"&gt;&lt;img height="154" width="240" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap67_5F00_thumb_5F00_65E47080.png" alt="snap67" border="0" title="snap67" style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;On the other hand&lt;/h2&gt;
&lt;p&gt;Finishing the game in only two days (more like one) after about three go&amp;#39;s I really started wondering whether the solution given below is the only one. If you&amp;#39;ve read the original novel by Bram Stoker (which I can really, really recommend for all you English books readers or students who need a good book for their reading list), you find that the DRACULA - THE UNDEAD only covers about a seventh of the novel. Some arguments to confirm my doubts: in the sewing room where you fall asleep and nearly get killed by the three brides you come across several objects I cannot seem to use in any way. There are more of those unusable objects, by the way. Furthermore, most doors that are locked can be opened later on in the game. Some, however, not. What about the coins you carry, but do not seem to need? Although being warned several times to escape before the brides &amp;#39;claim you with their voluptuous kisses&amp;#39; I never got killed by them.&lt;/p&gt;
&lt;p&gt;I imagine this to be the result of always having broken open the window of Jonathan&amp;#39;s bedroom, so I could exit the room later in the game, when the door to the antechamber from the bedroom is locked. Does anybody know if this is really so? And last and certainly not least: if you happen to have GAMEZONE issue four handy, look on page 91, the LYNX previews. You&amp;#39;ll notice a picture from the DRACULA game showing Jonathan bending over Dracula in his coffin, stake in hand pointing towards Dracula&amp;#39;s chest. The text reads: &amp;#39;Finding a handy stake he is ready to end Draculas reign of terror.&amp;#39; I certainly did not find this picture anywhere in the game, so where did it go? Cancelled in a later version because Atari ran out of memory on the card, or did I miss out on a part of the game? &lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap43_5F00_3EAA274B.png"&gt;&lt;img height="154" width="240" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap43_5F00_thumb_5F00_2C616089.png" alt="snap43" border="0" title="snap43" style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" /&gt;&lt;/a&gt;&lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap59_5F00_7E07DADB.png"&gt;&lt;img height="154" width="240" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap59_5F00_thumb_5F00_52C343D4.png" alt="snap59" border="0" title="snap59" style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" /&gt;&lt;/a&gt;&lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap61_5F00_0B6DEDE2.png"&gt;&lt;img height="154" width="240" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap61_5F00_thumb_5F00_7925271F.png" alt="snap61" border="0" title="snap61" style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;Walkthrough (Spoiler alert)&lt;/h2&gt;
&lt;p&gt;The actual walkthrough is too long for this blog post. I have uploaded it to the Media area of this blog. &lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.alexthissen.nl/media/p/22582.aspx"&gt;&lt;img height="110" width="113" src="http://t0.gstatic.com/images?q=tbn:ANd9GcSd8-JcdrlGpDcLoKiFTIhR0DJs-8oPVua2kZ0nDqYmvGmBNFGuVQ" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;You can find the PDF file for the walkthrough &lt;a href="http://www.alexthissen.nl/media/p/22582.aspx"&gt;here&lt;/a&gt;.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.alexthissen.nl/aggbug.aspx?PostID=22583" width="1" height="1"&gt;</description><category domain="http://www.alexthissen.nl/blogs/atarilynx/archive/tags/Games/default.aspx">Games</category></item><item><title>Completing Chip’s Challenge game</title><link>http://www.alexthissen.nl/blogs/atarilynx/archive/2011/07/18/completing-chip-s-challenge-game.aspx</link><pubDate>Mon, 18 Jul 2011 14:52:47 GMT</pubDate><guid isPermaLink="false">badf6229-ffeb-484a-8c5a-fc9c9987c8f2:22581</guid><dc:creator>Alex Thissen</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;To be honest, I do not remember whether I completed the Atari Lynx game Chip’s Challenge myself back at the time. Anyway, yesterday evening I sat down, looked up the level start code for the final level and gave it a spin. I quickly realized that I either had to use every memory muscle in my brain to finish this level, or make some notes. Well, some notes turned into a complete level map. Here is the layout of the final level:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/Chip4before_5F00_7C403959.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="Chip4before" border="0" alt="Chip4before" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/Chip4before_5F00_thumb_5F00_4AF14EF9.png" width="479" height="480" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;You start off at the place where Chip is shown. You first need to get the four keys to consecutively open the yellow, blue, red and green door. Then you head into the teleporter and find out you need to shove some bricks/boxes, brown thingies. Easy enough, except: underneath some of the boxes is fire, roasting your fine, nerdy buttocks. By trial and error you can find out which ones are safe to use, which ones are not. You will have to remember those. That’s possible because there is no randomization involved. You will have to try each and every box until you find the exit to finish the game behind one of them.&lt;/p&gt;  &lt;h2&gt;Spoiler alert!!!&lt;/h2&gt;  &lt;p&gt;You can save some time looking at the map below. It shows what is beneath a box, if something is there at all. So the fire indicates hotness beyond your ability to handle. The question marks will say: “This spot would be too obvious!”. Finally, the exit is shown to be at the top row, slightly off to the left side of the middle (second block from the middle). Here’s the map with the locations:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/Chip4after_5F00_220639F0.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="Chip4after" border="0" alt="Chip4after" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/Chip4after_5F00_thumb_5F00_1A2E2181.png" width="479" height="480" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Once you reach the exit, you are welcomed by the end sequence. Melissa is hugging you for completing this quest and takes you to the prom “E-prom”.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap31_5F00_181122B8.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="snap31" border="0" alt="snap31" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap31_5F00_thumb_5F00_70D6D982.png" width="240" height="154" /&gt;&lt;/a&gt;&amp;#160;&lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap32_5F00_3753C98B.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="snap32" border="0" alt="snap32" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap32_5F00_thumb_5F00_622C2D9D.png" width="240" height="154" /&gt;&lt;/a&gt;&amp;#160;&lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap33_5F00_0FAD4D61.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="snap33" border="0" alt="snap33" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap33_5F00_thumb_5F00_6873042B.png" width="240" height="154" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;For your entertainment I also uploaded a speedrun of the level to Youtube.&lt;/p&gt;  &lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:74ff0c58-37ef-4716-9e03-88633d87a214" class="wlWriterEditableSmartContent"&gt;&lt;div&gt;&lt;a href="http://www.youtube.com/watch?v=QbHkL2spxkk&amp;amp;feature=youtube_gdata_player" target="_new"&gt;&lt;img src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/video83a2913e19cc_5F00_6F260DAE.jpg" style="border-style:none;" alt="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="width:448px;clear:both;font-size:.8em;"&gt;Speedrun of level 149 “Special” of Atari Lynx game Chip’s Challenge&lt;/div&gt;&lt;/div&gt;  &lt;p&gt;Have fun!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.alexthissen.nl/aggbug.aspx?PostID=22581" width="1" height="1"&gt;</description><category domain="http://www.alexthissen.nl/blogs/atarilynx/archive/tags/Games/default.aspx">Games</category></item><item><title>Using WCF and WIF to perform WS-Trust active claim requests</title><link>http://www.alexthissen.nl/blogs/main/archive/2011/07/18/using-active-profile-for.aspx</link><pubDate>Mon, 18 Jul 2011 14:07:39 GMT</pubDate><guid isPermaLink="false">badf6229-ffeb-484a-8c5a-fc9c9987c8f2:22580</guid><dc:creator>Alex Thissen</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;The last week I have been working on a claim-based identity scenario that involves two separate instances of a Active Directory Federation Services (ADFS) 2.0 as Security Token Service (STS). The first STS is an identity provider STS (IP-STS) and the second a resource STS (R-STS) . The R-STS and IP-STS have a trust relationship in that the IP-STS is a trusted identity provider to the R-STS. Typically this setup is used with the passive profile for federation from browser clients. The web application (SharePoint 2010 for our scenario) would require authentication, redirect to the R-STS, which in turn would redirected (after IP selection) to the IP-STS. Here the end-user will authenticate, gets a identity claims from the IP-STS and is redirected back to the R-STS. The resource STS can augment claims from information stored in AD Lightweight Directory Services (AD-LDS) and issue the final claim token to the passively federated web application.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/main/image_5F00_18889F28.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/main/image_5F00_thumb_5F00_4609BEEB.png" width="567" height="366" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;In our case we have a SharePoint 2007 application, which does not have its own STS to initiate the entire process. Also, business requirements demand that &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;the user interface is completely controlled &lt;/li&gt;    &lt;li&gt;no redirects to other pages during authentication &lt;/li&gt;    &lt;li&gt;authentication takes place from within a certain screen flow &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;These requirements made us investigate the active profile flow for the setup. In an active profile flow you will use the web services of ADFS 2.0 to communicate directly to the STS instances. You can use either the WS-Trust or WS-Federation protocol depending on your requirements. WS-Federation allows you to call the R-STS directly with the retrieval of the IP-STS claim performed under the covers. WS-Trust is used for the individuals steps. You can also leverage WS-Trust to take full control of the individual steps. To get acquainted with the entire active scenario we chose to the latter approach. Windows Communication Foundation (WCF) and Windows Identity Foundation (WIF) provide ready-to-use channels for the WS-Trust protocol and WS-Federation protocol. The scenario will take several steps:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Acquire an identity claim from the IP-STS by using username/password authentication to authenticate. &lt;/li&gt;    &lt;li&gt;The IP-STS will issue a claim token regarding our identity, sign and encrypt it and send it back to us. &lt;/li&gt;    &lt;li&gt;Use the claim token from the IP-STS to authenticate against the R-STS and request a new claim token with additional claims from AD-LDS. &lt;/li&gt;    &lt;li&gt;The R-STS will also issue the (augmented) claim, sign and (optionally) encrypt it and send it. &lt;/li&gt;    &lt;li&gt;We need to decrypt the token, check its signature and issuer and convert the claim token to a principal object. &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Note that we made some design choices, such as using username/password to authenticate against the IP-STS. You could make similar or different choices depending on your particular scenario.&lt;/p&gt;  &lt;h3&gt;Step 1: Acquiring an identity claims from an active STS&lt;/h3&gt;  &lt;p&gt;The first part of the process is the acquisition of a claim token from the IP-STS. We need one of the specialized WCF binding for a WS-Trust channel. Because we are using username and password to authenticate, this comes down to UserNameWSTrustBinding. We want to use transport security (an HTTPS connection) with credentials inside of the message (because Message security would mean that we need encryption and certificate exchange for this part). The endpoint at ADFS is &lt;a href="https://identityadfs.company.com/services/trust/2005/usernamemixed"&gt;https://identityadfs.company.com/services/trust/2005/usernamemixed&lt;/a&gt; to reflect our choices. The 2005 endpoint will use the newer WS-Trust 1.3 specification (as opposed to the February 2005 one).&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/main/image_5F00_4C509579.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/main/image_5F00_thumb_5F00_1024C9D1.png" width="640" height="211" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;pre style="background:white;"&gt;&lt;font size="2"&gt;&lt;font face="Consolas"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt;&lt;/span&gt; binding = &lt;span&gt;&lt;font color="#0000ff"&gt;new&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span&gt;&lt;font color="#2b91af"&gt;UserNameWSTrustBinding&lt;/font&gt;&lt;/span&gt;(&lt;span&gt;&lt;font color="#2b91af"&gt;SecurityMode&lt;/font&gt;&lt;/span&gt;.TransportWithMessageCredential);
&lt;span&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt;&lt;/span&gt; factory = &lt;span&gt;&lt;font color="#0000ff"&gt;new&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span&gt;&lt;font color="#2b91af"&gt;WSTrustChannelFactory&lt;/font&gt;&lt;/span&gt;(binding, &lt;/font&gt;&lt;font face="Consolas"&gt;&lt;span&gt;&lt;font color="#a31515"&gt;&amp;quot;https://identityadfs.company.com/adfs/services/trust/13/usernamemixed&amp;quot;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;font size="2"&gt;)
  {
    TrustVersion = &lt;span&gt;&lt;font color="#2b91af"&gt;TrustVersion&lt;/font&gt;&lt;/span&gt;.WSTrustFeb2005,
  };
 
factory.Credentials.UserName.UserName = &lt;span&gt;&lt;font color="#a31515"&gt;@&amp;quot;youraccount&amp;quot;&lt;/font&gt;&lt;/span&gt;;
factory.Credentials.UserName.Password = &lt;span&gt;&lt;font color="#a31515"&gt;@&amp;quot;abc123!&amp;quot;&lt;/font&gt;&lt;/span&gt;;
factory.ConfigureChannelFactory();&lt;/font&gt;
&lt;/font&gt;&lt;/pre&gt;

&lt;p&gt;We now have a configured channel factory to create an actual WS-Trust channel. Across that channel we want to send a Request Security Token (RST) message. &lt;/p&gt;

&lt;pre style="background:white;"&gt;&lt;font size="2"&gt;&lt;font face="Consolas"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt;&lt;/span&gt; rst = &lt;span&gt;&lt;font color="#0000ff"&gt;new&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span&gt;&lt;font color="#2b91af"&gt;RequestSecurityToken&lt;/font&gt;&lt;/span&gt;
  {
    RequestType = &lt;span&gt;&lt;font color="#2b91af"&gt;WSTrust13Constants&lt;/font&gt;&lt;/span&gt;.&lt;span&gt;&lt;font color="#2b91af"&gt;RequestTypes&lt;/font&gt;&lt;/span&gt;.Issue,
    AppliesTo = &lt;span&gt;&lt;font color="#0000ff"&gt;new&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span&gt;&lt;font color="#2b91af"&gt;EndpointAddress&lt;/font&gt;&lt;/span&gt;(&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;span&gt;&lt;font color="#a31515"&gt;&lt;a href="http://resourceadfs.company.com/adfs/services/trust"&gt;http://resourceadfs.company.com/adfs/services/trust&lt;/a&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2" face="Consolas"&gt;),
    KeyType = &lt;span&gt;&lt;font color="#2b91af"&gt;WSTrust13Constants&lt;/font&gt;&lt;/span&gt;.&lt;span&gt;&lt;font color="#2b91af"&gt;KeyTypes&lt;/font&gt;&lt;/span&gt;.Symmetric
  };&lt;/font&gt;&lt;/pre&gt;

&lt;pre style="background:white;"&gt;&lt;font face="Consolas"&gt;&lt;font size="2"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt;&lt;/span&gt; channel = factory.CreateChannel();
&lt;span&gt;&lt;font color="#0000ff"&gt;return&lt;/font&gt;&lt;/span&gt; channel.Issue(rst);&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;

&lt;p&gt;As you can see this RST message indicates an issue request for the audience “http://sourceadfs.company.com/adfs/services/trust/active”, which is the identifier of the relying party (the IP-STS) administration in the R-STS . In other words: a identity claim token intended to be shown to the R-STS. &lt;/p&gt;

&lt;p&gt;We also ask the IP-STS issuer to encrypt the claim token with a symmetric key. You will see why this is in a moment. In other situations you could have asked for a Bearer (unecnrypted) key type token, which would have allowed you to inspect the token.&lt;/p&gt;

&lt;h3&gt;Step 2: Issue token from IP-STS&lt;/h3&gt;

&lt;p&gt;The IP-STS will accept and validate our credentials against the Active Directory Domain Services identity store. When successfully authenticated, ADFS will use its claim rules to extract information from ADDS and build a claim token with the indicated claims. Next it will encrypt this claim token using a certificate with a public key. This public key belongs to a public/private key pair that the R-STS holds. The IP-STS can encrypt the token, where only the R-STS can decrypt it using its private key.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/main/image_5F00_2B5D22D2.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/main/image_5F00_thumb_5F00_4B0BFC9A.png" width="640" height="211" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;Step 3: Use claim token to authenticate and request augmented claim token&lt;/h3&gt;

&lt;p&gt;Now, we can use the issued identity claim token to authenticate against the R-STS. We will again use a WS-Trust channel, but now with issued token authentication.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/main/image_5F00_2A1889F3.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/main/image_5F00_thumb_5F00_30CB9376.png" width="640" height="175" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;pre style="background:white;"&gt;&lt;font size="2"&gt;&lt;font face="Consolas"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt;&lt;/span&gt; binding = &lt;span&gt;&lt;font color="#0000ff"&gt;new&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span&gt;&lt;font color="#2b91af"&gt;IssuedTokenWSTrustBinding&lt;/font&gt;&lt;/span&gt;();
binding.SecurityMode = &lt;span&gt;&lt;font color="#2b91af"&gt;SecurityMode&lt;/font&gt;&lt;/span&gt;.TransportWithMessageCredential;
binding.KeyType = &lt;span&gt;&lt;font color="#2b91af"&gt;SecurityKeyType&lt;/font&gt;&lt;/span&gt;.SymmetricKey;
 
&lt;span&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt;&lt;/span&gt; factory = &lt;span&gt;&lt;font color="#0000ff"&gt;new&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span&gt;&lt;font color="#2b91af"&gt;WSTrustChannelFactory&lt;/font&gt;&lt;/span&gt;(binding, &lt;br /&gt;  &lt;/font&gt;&lt;font face="Consolas"&gt;&lt;span&gt;&lt;font color="#a31515"&gt;&amp;quot;https://resourceadfs.company.com/adfs/services/trust/13/issuedtokenmixedsymmetricbasic256&amp;quot;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;font size="2"&gt;);
factory.TrustVersion = &lt;span&gt;&lt;font color="#2b91af"&gt;TrustVersion&lt;/font&gt;&lt;/span&gt;.WSTrust13;
factory.Credentials.SupportInteractive = &lt;span&gt;&lt;font color="#0000ff"&gt;false&lt;/font&gt;&lt;/span&gt;;&lt;br /&gt;factory.ConfigureChannelFactory();&lt;/font&gt; &lt;/font&gt;&lt;/pre&gt;

&lt;p&gt;&lt;font style="font-size:12pt;"&gt;The configuration of the channel factory is similar to the first step. The key differences are that we now have an IssuedTokenWSTrustBinding and a symmetric key for the issued token. The reason for choosing the symmetric encrypted request in the first step is that the R-STS does not accept Bearer key tokens for authentication. They have to be (a)symmetrically signed for the R-STS to use them as an authentication means. Also, we suppress the Interactive support (meaning InfoCard c.q. CardSpace UI), as we are initiating a service request (hence, no user is available).&lt;/font&gt;&lt;/p&gt;

&lt;p&gt;&lt;font size="3"&gt;Next, we create another RST message and send it out to the R-STS.&lt;/font&gt;&lt;/p&gt;

&lt;pre style="background:white;"&gt;&lt;font face="Consolas"&gt;&lt;font size="2"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt;&lt;/span&gt; rst = &lt;span&gt;&lt;font color="#0000ff"&gt;new&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span&gt;&lt;font color="#2b91af"&gt;RequestSecurityToken&lt;/font&gt;&lt;/span&gt;
  {
    RequestType = &lt;span&gt;&lt;font color="#2b91af"&gt;RequestTypes&lt;/font&gt;&lt;/span&gt;.Issue,
    AppliesTo = &lt;span&gt;&lt;font color="#0000ff"&gt;new&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span&gt;&lt;font color="#2b91af"&gt;EndpointAddress&lt;/font&gt;&lt;/span&gt;(&lt;font face="Consolas"&gt;&lt;span&gt;&lt;font color="#a31515"&gt;&amp;quot;http://sp2007webapp.company.com&amp;quot;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;),
    KeyType = &lt;span&gt;&lt;font color="#2b91af"&gt;KeyTypes&lt;/font&gt;&lt;/span&gt;.Bearer
  };&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt;&lt;/span&gt; channel = factory.CreateChannelWithIssuedToken(token);
&lt;span&gt;&lt;font color="#0000ff"&gt;return&lt;/font&gt;&lt;/span&gt; channel.Issue(rst);&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;

&lt;p&gt;The RST now indicates an audience for the SharePoint 2007 application. Its key type can be Bearer or (A)Symmetric, depending on how you want the token to be transferred. Should you choose the Symmetric or Asymmetric key type, you will need to install a server certificate on the web application’s IIS server, extract the public key and install it on the R-STS server as the encryption certificate for the relying party (i.e. the SharePoint app) trust.&lt;/p&gt;

&lt;p&gt;Finally, using an extension method from WIF we create a channel from the factory that can convey the token as an authentication means. Lastly, we send out the RST message and return the token to the caller after step 4 has completed.&lt;/p&gt;

&lt;h3&gt;Step 4: Issuing an augmented claim&lt;/h3&gt;

&lt;p&gt;Once the issued token arrives at the R-STS, ADFS will decrypt the token using its public/private keypair. If it is a valid token, the R-STS will believe its trusted IP-STS that the credentials originally provided where correct. According to the configured claim rules the R-STS will create new and/or additional claims (called claim augmentation) to the new claim token. It will include the audience, sign it, encrypt it if you indicated so in the RST, and send out the RST response (RSTR).&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/main/image_5F00_104453C4.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/main/image_5F00_thumb_5F00_61EACE16.png" width="640" height="160" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;Step 5: Check claim token and create principal&lt;/h3&gt;

&lt;p&gt;The last step is back on the SharePoint application. &lt;/p&gt;

&lt;pre style="background:white;"&gt;&lt;font face="Consolas"&gt;&lt;span&gt;&lt;font color="#2b91af" size="2"&gt;GenericXmlSecurityToken&lt;/font&gt;&lt;/span&gt;&lt;font size="2"&gt; augmentedToken = AugmentClaims(issuedToken);
&lt;span&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt;&lt;/span&gt; tokenReader = &lt;span&gt;&lt;font color="#0000ff"&gt;new&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span&gt;&lt;font color="#2b91af"&gt;StringReader&lt;/font&gt;&lt;/span&gt;(augmentedToken.TokenXml.OuterXml);
&lt;span&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt;&lt;/span&gt; reader = &lt;span&gt;&lt;font color="#2b91af"&gt;XmlReader&lt;/font&gt;&lt;/span&gt;.Create(tokenReader);&lt;/font&gt;
&lt;/font&gt;&lt;/pre&gt;

&lt;p&gt;The issuedToken variable contains the token received from step 1 and 2. The AugmentClaims method is the implementation shown in step 3. When the R-STS returns the augmented claim, it will surface as a GenericXmlSecurityToken. We set up an XmlReader to start reading the token.&lt;/p&gt;

&lt;p&gt;Remember that to read the token we need to decrypt it, check its signature, audience and issuer. This checking is taken care of by a set of token handlers&lt;/p&gt;

&lt;pre style="background:white;"&gt;&lt;font face="Consolas"&gt;&lt;span&gt;&lt;font color="#2b91af" size="2"&gt;SecurityTokenHandlerCollection&lt;/font&gt;&lt;/span&gt;&lt;font size="2"&gt; handlers = &lt;br /&gt;  &lt;span&gt;&lt;font color="#2b91af"&gt;SecurityTokenHandlerCollection&lt;/font&gt;&lt;/span&gt;.CreateDefaultSecurityTokenHandlerCollection();&lt;/font&gt;
&lt;/font&gt;&lt;/pre&gt;

&lt;p&gt;The default security handlers are some eight handlers for various types of tokens. They all use the configuration defined at the SecurityTokenHandlerCollection. First, we will add our public/private keypair as the certificate that the token resolver should use for decryption. The SecurityTokenResolver will use the thumbprint as a reference to the certificate &lt;/p&gt;

&lt;pre style="background:white;"&gt;&lt;font face="Consolas"&gt;&lt;span&gt;&lt;font color="#2b91af" size="2"&gt;X509Store&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:12pt;" size="2"&gt;&lt;font size="2"&gt; store = &lt;span&gt;&lt;font color="#0000ff"&gt;new&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span&gt;&lt;font color="#2b91af"&gt;X509Store&lt;/font&gt;&lt;/span&gt;(&lt;span&gt;&lt;font color="#2b91af"&gt;StoreName&lt;/font&gt;&lt;/span&gt;.My, &lt;span&gt;&lt;font color="#2b91af"&gt;StoreLocation&lt;/font&gt;&lt;/span&gt;.LocalMachine);
store.Open(&lt;span&gt;&lt;font color="#2b91af"&gt;OpenFlags&lt;/font&gt;&lt;/span&gt;.ReadOnly);
&lt;span&gt;&lt;font color="#2b91af"&gt;X509Certificate2Collection&lt;/font&gt;&lt;/span&gt; certificates = store.Certificates;
&lt;span&gt;&lt;font color="#2b91af"&gt;X509Certificate2&lt;/font&gt;&lt;/span&gt; certificate = certificates.Find(&lt;br /&gt;  &lt;span&gt;&lt;font color="#2b91af"&gt;X509FindType&lt;/font&gt;&lt;/span&gt;.FindByThumbprint, &lt;br /&gt;  &lt;span&gt;&lt;font color="#a31515"&gt;&amp;quot;&lt;em&gt;ThumbprintForWebAppPubPrivCertificateAllCapitals&lt;/em&gt;&amp;quot;&lt;/font&gt;&lt;/span&gt;, &lt;span&gt;&lt;font color="#0000ff"&gt;true&lt;/font&gt;&lt;/span&gt;)[0];&lt;/font&gt;
&lt;font size="2"&gt; 
&lt;span&gt;&lt;font color="#2b91af"&gt;List&lt;/font&gt;&lt;/span&gt;&amp;lt;&lt;span&gt;&lt;font color="#2b91af"&gt;SecurityToken&lt;/font&gt;&lt;/span&gt;&amp;gt; serviceTokens = &lt;span&gt;&lt;font color="#0000ff"&gt;new&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span&gt;&lt;font color="#2b91af"&gt;List&lt;/font&gt;&lt;/span&gt;&amp;lt;&lt;span&gt;&lt;font color="#2b91af"&gt;SecurityToken&lt;/font&gt;&lt;/span&gt;&amp;gt;();
serviceTokens.Add(&lt;span&gt;&lt;font color="#0000ff"&gt;new&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span&gt;&lt;font color="#2b91af"&gt;X509SecurityToken&lt;/font&gt;&lt;/span&gt;(certificate));
&lt;span&gt;&lt;font color="#2b91af"&gt;SecurityTokenResolver&lt;/font&gt;&lt;/span&gt; serviceResolver = &lt;br /&gt;  &lt;span&gt;&lt;font color="#2b91af"&gt;SecurityTokenResolver&lt;/font&gt;&lt;/span&gt;.CreateDefaultSecurityTokenResolver(&lt;br /&gt;  serviceTokens.AsReadOnly(), &lt;span&gt;&lt;font color="#0000ff"&gt;false&lt;/font&gt;&lt;/span&gt;);
handlers.Configuration.ServiceTokenResolver = serviceResolver;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;

&lt;p&gt;You will only need the code fragment for the token resolver above if you indicated an encrypted token. We did not, so these 8 lines of code are not necessary.&lt;/p&gt;

&lt;p&gt;Next, we will add a certificate store for the issuer resolution. The token handlers will look up the issuer’s certificate thumbprint in the Personal certificates store of Local machine (not a user’s store).&lt;/p&gt;

&lt;pre style="background:white;"&gt;&lt;font face="Consolas"&gt;&lt;font size="2"&gt;&lt;span&gt;&lt;font color="#2b91af"&gt;SecurityTokenHandlerCollection&lt;/font&gt;&lt;/span&gt; handlers = &lt;br /&gt;  &lt;span&gt;&lt;font color="#2b91af"&gt;SecurityTokenHandlerCollection&lt;/font&gt;&lt;/span&gt;.CreateDefaultSecurityTokenHandlerCollection();&lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;font size="2"&gt;&lt;span&gt;&lt;font color="#2b91af"&gt;X509CertificateStoreTokenResolver&lt;/font&gt;&lt;/span&gt; certificateStoreIssuerResolver = &lt;br /&gt;  &lt;span&gt;&lt;font color="#0000ff"&gt;new&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span&gt;&lt;font color="#2b91af"&gt;X509CertificateStoreTokenResolver&lt;/font&gt;&lt;/span&gt;(&lt;span&gt;&lt;font color="#2b91af"&gt;StoreName&lt;/font&gt;&lt;/span&gt;.My, &lt;span&gt;&lt;font color="#2b91af"&gt;StoreLocation&lt;/font&gt;&lt;/span&gt;.LocalMachine);&lt;br /&gt;handlers.Configuration.IssuerTokenResolver = certificateStoreIssuerResolver;&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;

&lt;pre style="background:white;"&gt;&lt;font face="Consolas"&gt;&lt;font size="2"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt;&lt;/span&gt; registry = &lt;span&gt;&lt;font color="#0000ff"&gt;new&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span&gt;&lt;font color="#2b91af"&gt;ConfigurationBasedIssuerNameRegistry&lt;/font&gt;&lt;/span&gt;();
registry.AddTrustedIssuer(&lt;span&gt;&lt;font color="#a31515"&gt;&amp;quot;&lt;em&gt;ThumbPrintForResourceADFSPubSigningAllCapitals&lt;/em&gt;&amp;quot;&lt;/font&gt;&lt;/span&gt;, &lt;br /&gt;  &lt;span&gt;&lt;font color="#a31515"&gt;&lt;a href="http://resourceadfs.company.com/adfs/services/trust"&gt;http://resourceadfs.company.com/adfs/services/trust&lt;/a&gt;&lt;/font&gt;&lt;/span&gt;);&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;

&lt;pre style="background:white;"&gt;&lt;font size="2"&gt;&lt;font face="Consolas"&gt;handlers.Configuration.IssuerNameRegistry = registry;&lt;br /&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;handlers.Configuration.AudienceRestriction.AllowedAudienceUris.&lt;br /&gt;  Add(&lt;span&gt;&lt;font color="#0000ff"&gt;new&lt;/font&gt;&lt;/span&gt; &lt;span&gt;&lt;font color="#2b91af"&gt;Uri&lt;/font&gt;&lt;/span&gt;(&lt;span&gt;&lt;font color="#a31515"&gt;&lt;a href="http://sp2007webapp.company.com"&gt;http://sp2007webapp.company.com&lt;/a&gt;&lt;/font&gt;&lt;/span&gt;));&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;

&lt;p&gt;With all this setup, all that remains it to actually read (decrypt) the token and to check its signature, issuer and audience. The set of identities that is included will contain 1 IClaimsIdentity derived object containing our identity with corresponding claims.&lt;/p&gt;

&lt;p&gt;&lt;font size="2"&gt;&lt;font face="Consolas"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt;&lt;/span&gt; samlToken = handlers.ReadToken(reader); 

      &lt;br /&gt;&lt;font face="Consolas"&gt;&lt;span&gt;&lt;font color="#2b91af"&gt;IClaimsIdentity &lt;/font&gt;&lt;/span&gt;&lt;/font&gt;identity = handlers.ValidateToken(samlToken)[0];&lt;/font&gt; &lt;/font&gt;&lt;/p&gt;

&lt;h2&gt;All done&lt;/h2&gt;

&lt;p&gt;At this point we have a ClaimsIdentity that we can use to construct a claim principal and start reading claims for authorization inside our application. You might want to have the claims principal set to the current thread Thread.CurrentPrincipal and the HTTP context via HttpContext.Current.User. Inside the identity you can see the initial authentication type (username/password in our case) and for each claim the issuer (R-STS) and the original issuer (IP-STS, only when you passed through the original IP-STS claim as a R-STS claim).&lt;/p&gt;

&lt;p&gt;All steps assume a happy flow, but you will need to include the usual exception handling for Timeout-, Communication-, ObjectDisposedException and other exceptions that may occur.&lt;/p&gt;

&lt;p&gt;Hope this helps.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.alexthissen.nl/aggbug.aspx?PostID=22580" width="1" height="1"&gt;</description><category domain="http://www.alexthissen.nl/blogs/main/archive/tags/Security/default.aspx">Security</category><category domain="http://www.alexthissen.nl/blogs/main/archive/tags/WCF/default.aspx">WCF</category><category domain="http://www.alexthissen.nl/blogs/main/archive/tags/ADFS/default.aspx">ADFS</category></item><item><title>Maps of “Todd’s Adventures in Slimeworld”</title><link>http://www.alexthissen.nl/blogs/atarilynx/archive/2011/07/10/maps-of-todd-s-adventures-in-slimeworld.aspx</link><pubDate>Sun, 10 Jul 2011 19:44:46 GMT</pubDate><guid isPermaLink="false">badf6229-ffeb-484a-8c5a-fc9c9987c8f2:22577</guid><dc:creator>Alex Thissen</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;These maps have been in my folder for a very, very long time (around 1992). I thought it would be a shame to see them go to waste. &lt;/p&gt;  &lt;p&gt;When I was still in university I had too much time and an Atari Lynx with “Todd’s Adventures in Slimeworld” to boot. A great combination. I drew all maps of the single player adventures by hand and stuck them in a folder. Today, I used my scanner to scan each of them. Then I stitched together the individual pages and came up with the maps you can see here. I hope you enjoy them and find them useful. Pay special attention to the map for adventure 6 (Arcade): it shows the easter egg to the zit-popping game.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap30_5F00_406919E4.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="snap30" border="0" alt="snap30" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap30_5F00_thumb_5F00_3F90B3FA.png" width="240" height="154" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Let me know what you think.&lt;/p&gt;  &lt;h2&gt;Adventure 1: Easy&lt;/h2&gt;  &lt;p&gt;&lt;a href="https://skydrive.live.com/?cid=bc47bfd75f6e49a0&amp;amp;sc=documents&amp;amp;id=BC47BFD75F6E49A0%211822#cid=BC47BFD75F6E49A0&amp;amp;id=BC47BFD75F6E49A0%211823&amp;amp;sc=documents"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="SlimeWorld Adventure 1 - Easy 25percent" border="0" alt="SlimeWorld Adventure 1 - Easy 25percent" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/SlimeWorld_2D00_Adventure_2D00_1_2D002D002D00_Easy_2D00_25percent_5F00_780362C6.png" width="640" height="64" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h2&gt;Adventure 2: Exploration&lt;/h2&gt;  &lt;p&gt;&lt;a href="https://skydrive.live.com/?cid=BC47BFD75F6E49A0&amp;amp;id=BC47BFD75F6E49A0%211823&amp;amp;sc=documents#cid=BC47BFD75F6E49A0&amp;amp;id=BC47BFD75F6E49A0%211824&amp;amp;sc=documents"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="SlimeWorld Adventure 2 - Exploration 25percent" border="0" alt="SlimeWorld Adventure 2 - Exploration 25percent" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/SlimeWorld_2D00_Adventure_2D00_2_2D002D002D00_Exploration_2D00_25percent_5F00_4AC5168A.png" width="640" height="87" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h2&gt;Adventure 3: Action&lt;/h2&gt;  &lt;p&gt;&lt;a href="https://skydrive.live.com/?cid=BC47BFD75F6E49A0&amp;amp;id=BC47BFD75F6E49A0%211823&amp;amp;sc=documents#cid=BC47BFD75F6E49A0&amp;amp;id=BC47BFD75F6E49A0%211825&amp;amp;sc=documents"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="SlimeWorld Adventure 3 - Action 25percent" border="0" alt="SlimeWorld Adventure 3 - Action 25percent" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/SlimeWorld_2D00_Adventure_2D00_3_2D002D002D00_Action_2D00_25percent_5F00_25B4081B.png" width="640" height="73" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h2&gt;Adventure 4: Suspense&lt;/h2&gt;  &lt;p&gt;&lt;a href="https://skydrive.live.com/?cid=BC47BFD75F6E49A0&amp;amp;id=BC47BFD75F6E49A0%211823&amp;amp;sc=documents#cid=BC47BFD75F6E49A0&amp;amp;id=BC47BFD75F6E49A0%211826&amp;amp;sc=documents"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="SlimeWorld Adventure 4 - Suspense 25percent" border="0" alt="SlimeWorld Adventure 4 - Suspense 25percent" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/SlimeWorld_2D00_Adventure_2D00_4_2D002D002D00_Suspense_2D00_25percent_5F00_24DBA231.png" width="640" height="77" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h2&gt;Adventure 5: Logic&lt;/h2&gt;  &lt;h2&gt;&lt;a href="https://skydrive.live.com/?cid=BC47BFD75F6E49A0&amp;amp;id=BC47BFD75F6E49A0%211823&amp;amp;sc=documents#cid=BC47BFD75F6E49A0&amp;amp;id=BC47BFD75F6E49A0%211827&amp;amp;sc=documents"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="SlimeWorld Adventure 5 - Logic 25percent" border="0" alt="SlimeWorld Adventure 5 - Logic 25percent" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/SlimeWorld_2D00_Adventure_2D00_5_2D002D002D00_Logic_2D00_25percent_5F00_280D8A19.png" width="640" height="119" /&gt;&lt;/a&gt;&lt;/h2&gt;  &lt;h2&gt;Adventure 6: Arcade&lt;/h2&gt;  &lt;p&gt;&lt;a href="https://skydrive.live.com/?cid=BC47BFD75F6E49A0&amp;amp;id=BC47BFD75F6E49A0%211823&amp;amp;sc=documents#cid=BC47BFD75F6E49A0&amp;amp;id=BC47BFD75F6E49A0%211822&amp;amp;sc=documents"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="SlimeWorld Adventure 6 - Arcade 25percent" border="0" alt="SlimeWorld Adventure 6 - Arcade 25percent" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/SlimeWorld_2D00_Adventure_2D00_6_2D002D002D00_Arcade_2D00_25percent_5F00_14802A78.png" width="640" height="38" /&gt;&lt;/a&gt;&lt;/p&gt;                &lt;h3&gt;Legend&lt;/h3&gt;  &lt;table border="0" cellspacing="0" cellpadding="2" width="442"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="136"&gt;&lt;strong&gt;Key&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="304"&gt;&lt;strong&gt;Description&lt;/strong&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="136"&gt;Number&lt;/td&gt;        &lt;td valign="top" width="304"&gt;Spawn point (see lookup list at right of map for start code)&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="136"&gt;G&lt;/td&gt;        &lt;td valign="top" width="304"&gt;Gem&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="136"&gt;SG&lt;/td&gt;        &lt;td valign="top" width="304"&gt;Super gem&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="136"&gt;M&lt;/td&gt;        &lt;td valign="top" width="304"&gt;Megabomb&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="136"&gt;V&lt;/td&gt;        &lt;td valign="top" width="304"&gt;Snapper&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="136"&gt;B&lt;/td&gt;        &lt;td valign="top" width="304"&gt;Bait&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="136"&gt;S&lt;/td&gt;        &lt;td valign="top" width="304"&gt;Shield&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="136"&gt;P&lt;/td&gt;        &lt;td valign="top" width="304"&gt;Gun powerup&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="136"&gt;J&lt;/td&gt;        &lt;td valign="top" width="304"&gt;Jetpack&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="136"&gt;C&lt;/td&gt;        &lt;td valign="top" width="304"&gt;Cleanser (changes slime pool to water)&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="136"&gt;R&lt;/td&gt;        &lt;td valign="top" width="304"&gt;Mushroom&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="136"&gt;Blue&lt;/td&gt;        &lt;td valign="top" width="304"&gt;Water&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="136"&gt;Green&lt;/td&gt;        &lt;td valign="top" width="304"&gt;Slime&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="136"&gt;Green (marked M)&lt;/td&gt;        &lt;td valign="top" width="304"&gt;Moving slime&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="136"&gt;Double line&lt;/td&gt;        &lt;td valign="top" width="304"&gt;Passway (door or ceiling)&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="136"&gt;Brown edge&lt;/td&gt;        &lt;td valign="top" width="304"&gt;Bouncy slime&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="136"&gt;Red edge&lt;/td&gt;        &lt;td valign="top" width="304"&gt;Sticky slime&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="136"&gt;Blue edge&lt;/td&gt;        &lt;td valign="top" width="304"&gt;Ice&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.alexthissen.nl/aggbug.aspx?PostID=22577" width="1" height="1"&gt;</description><category domain="http://www.alexthissen.nl/blogs/atarilynx/archive/tags/Games/default.aspx">Games</category></item><item><title>Portable Libraries for Visual Studio 2010 SP1</title><link>http://www.alexthissen.nl/blogs/main/archive/2011/07/07/portable-libraries-for-visual-studio-2010-sp1.aspx</link><pubDate>Thu, 07 Jul 2011 21:47:03 GMT</pubDate><guid isPermaLink="false">badf6229-ffeb-484a-8c5a-fc9c9987c8f2:22576</guid><dc:creator>Alex Thissen</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;The Microsoft &lt;a href="http://blogs.msdn.com/b/bclteam/" target="_blank"&gt;BCL team&lt;/a&gt; recently released the RTM version of &lt;a href="http://msdn.microsoft.com/en-us/library/gg597391.aspx" target="_blank"&gt;Portable Libraries&lt;/a&gt; (PL). This &lt;a href="http://visualstudiogallery.msdn.microsoft.com/b0e0b5e9-e138-410b-ad10-00cb3caf4981" target="_blank"&gt;PowerTool&lt;/a&gt; for Visual Studio 2010 SP1 allow you to develop managed assemblies for more than one target .NET framework. It will let you aim your code at both the full .NET Framework, Silverlight, Silverlight for Windows Phone 7 and/or Xbox 360. By using the Portable Libraries you can control which targets you are aiming for and compile a single assembly that will work on all targets you selected.&lt;/p&gt; &lt;p&gt;The Portable Libraries has features that are close to, yet different from another piece of functionality in Visual Studio: multitargeting. It is similar in that it will help you find the allowed subset of functionality in the .NET Framework given the combination of targets you select. It is different, because it will let you have a single project where you would normally have multiple projects for class libraries targeting .NET FX (versions 2.0 to 4.0, with full or client profile) and Silverlight. For Xbox 360 you have the Xbox 360 Game Library which comes close, but is a different thing altogether. PL projects are class libraries which can host reusable managed code over all of the previously mentioned.&lt;/p&gt; &lt;p&gt;You can install the tooling for PL from &lt;a href="http://visualstudiogallery.msdn.microsoft.com/b0e0b5e9-e138-410b-ad10-00cb3caf4981" target="_blank"&gt;here&lt;/a&gt;. Once you have done that, a new library project is available:&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/main/image_5F00_7B364EAA.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/main/image_5F00_thumb_5F00_48664836.png" width="640" height="211" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;A Portable Library project has its own project template. The main difference from a regular class library is in the AssemblyInfo.cs file. The contents are trimmed, because ComVisibleAttribute and GuidAttribute do not make sense for Silverlight and Xbox and are not allowed. The other difference is an extra tab on the Project Properties page. It allows you to specify the targets for your library.&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/main/image_5F00_07C3FBC7.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/main/image_5F00_thumb_5F00_596A7619.png" width="640" height="314" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;In the screenshot below you can see a Class Library project converted to a Portable Library. The references to assemblies that are not part of the allowed assemblies for the targets are indicated with exclamation marks, just as when you had selected a not allowed assembly for the .NET Target Framework in a normal Class Library.&lt;br /&gt;&lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/main/image_5F00_38770372.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/main/image_5F00_thumb_5F00_4CFC52F0.png" width="384" height="482" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;The Portable Libraries have a different build target, which further distinguishes them from regular class libraries.&lt;/p&gt; &lt;p&gt;The allowed set of assemblies is listed &lt;a href="http://msdn.microsoft.com/en-us/library/gg597391.aspx" target="_blank"&gt;here&lt;/a&gt;, but to give you an idea, it is limited:&lt;/p&gt; &lt;ul&gt; &lt;li&gt; &lt;p&gt;&lt;strong&gt;mscorlib.dll&lt;/strong&gt;&lt;/p&gt; &lt;li&gt; &lt;p&gt;&lt;strong&gt;System.dll&lt;/strong&gt;&lt;/p&gt; &lt;li&gt; &lt;p&gt;&lt;strong&gt;System.Core.dll&lt;/strong&gt;&lt;/p&gt; &lt;li&gt; &lt;p&gt;System.Xml.dll&lt;/p&gt; &lt;li&gt; &lt;p&gt;&lt;em&gt;System.ComponentModel.Composition.dll&lt;/em&gt; (MEF)&lt;/p&gt; &lt;li&gt; &lt;p&gt;System.Net.dll&lt;/p&gt; &lt;li&gt; &lt;p&gt;System.Runtime.Serialization.dll&lt;/p&gt; &lt;li&gt; &lt;p&gt;System.ServiceModel.dll&lt;/p&gt; &lt;li&gt; &lt;p&gt;System.Xml.Serialization.dll&lt;/p&gt; &lt;li&gt; &lt;p&gt;System.Windows.dll (from Silverlight)&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;This set is the largest possible if you are only targeting .NET Framework 4. For Silverlight and Phone 7 you cannot use MEF (System.ComponentModel.Composition), and for Xbox 360 you can &lt;u&gt;only&lt;/u&gt; use the bold assemblies.&lt;/p&gt; &lt;p&gt;The use of the Portable Class Library project will pay of in finding which classes you can use and which not. If you are in doubt, you can check the MSDN documentation and make sure. Here is an example for the System.Runtime.InteropServices.StructLayoutAttribute class:&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/main/image_5F00_1EA2CD43.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/main/image_5F00_thumb_5F00_4570E383.png" width="273" height="284" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;In the type’s members you can see whether a particular member is supported (when the type itself is):&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/main/image_5F00_053ACA09.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/main/image_5F00_thumb_5F00_5E0080D3.png" width="383" height="168" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;The small project icon in the left column means it is supported.&lt;/p&gt; &lt;h2&gt;An example scenario&lt;/h2&gt; &lt;p&gt;Let’s say you have a piece of C# code that can be reused in an application or game for Windows, Phone and Xbox 360. Normally (without Portable Libraries), you would need to set up several projects:&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/main/image_5F00_6FDD14A0.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/main/image_5F00_thumb_5F00_5D944DDE.png" width="257" height="371" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Each of the ReusableGameCore libraries contain the same code, but have a different target. They are referenced by the corresponding game (or application) version for Windows, Phone and Xbox. &lt;/p&gt; &lt;p&gt;You need to do so, because the build target need to be different for the various consumers of your reusable code. For example, referencing a normal Class Library project in an XNA Game Studio 4.0 project for Xbox 360 will get you compile errors. It will complain about the “wrong” target framework being selected, even though you have changed it to .NET 4 Client Profile (or something else). &lt;/p&gt; &lt;p&gt;As you can see in the screenshot the code in the Silverlight and Xbox360 library projects is linked from the Windows version. You will only have one version of the code, but having three project is not ideal.&lt;/p&gt; &lt;p&gt;The alternative is offered by Portable Libraries. In that case the three libraries can be combined into a single one. Your solution will look like this:&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/main/image_5F00_4F55D4EE.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/main/image_5F00_thumb_5F00_0F1FBB74.png" width="257" height="224" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;The three other projects each reference the single portable class library. Quicker to set up and easier to maintain. Moreover, you can install additional frameworks, which allows you to target other or more from the same library.&lt;/p&gt; &lt;h2&gt;Converting a Class Library to a Portable Class Library&lt;/h2&gt; &lt;p&gt;It could very well be that you have a Visual Studio solution that holds class libraries which you would like to be Portable. One option is to create a new Portable Library project and transfer the files from the class library to the new Portable project. This should be the normal way to go. I tried whether it is possible to convert the class library project into a portable one. Turns out that it can be done. Here’s how:&lt;/p&gt; &lt;ol&gt; &lt;li&gt;Unload the Class Library project. Right-click the project and select Unload Project from the context menu to do so.  &lt;li&gt;Edit the .csproj or .vbproj file. Pick the option from the context menu.  &lt;li&gt;Add the following fragment to the first &amp;lt;PropertyGroup&amp;gt; under the &amp;lt;Project&amp;gt; root element:&lt;br /&gt;&lt;br /&gt;C#:&lt;pre style="background:white;"&gt;&lt;font face="Consolas"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size:12pt;"&gt;&amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:12pt;"&gt;&lt;span&gt;&lt;font color="#a31515"&gt;ProjectTypeGuids&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}&lt;span&gt;&lt;font color="#0000ff"&gt;&amp;lt;/&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#a31515"&gt;ProjectTypeGuids&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size:12pt;"&gt;&amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:12pt;"&gt;&lt;span&gt;&lt;font color="#a31515"&gt;TargetFrameworkProfile&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;Profile1&lt;span&gt;&lt;font color="#0000ff"&gt;&amp;lt;/&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#a31515"&gt;TargetFrameworkProfile&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;&lt;pre style="list-style-type:disc;background:white;"&gt;&lt;font face="Calibri"&gt;Visual Basic:&lt;/font&gt;&lt;/pre&gt;&lt;pre style="list-style-type:disc;background:white;"&gt;&lt;font face="Consolas"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size:12pt;"&gt;&amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:12pt;"&gt;&lt;span&gt;&lt;font color="#a31515"&gt;ProjectTypeGuids&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;{14182A97-F7F0-4C62-8B27-98AA8AE2109A};{F184B08F-C81C-45F6-A57F-5ABD9991F28F}&lt;span&gt;&lt;font color="#0000ff"&gt;&amp;lt;/&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#a31515"&gt;ProjectTypeGuids&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;
&lt;span&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#a31515"&gt;TargetFrameworkProfile&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;Profile2&lt;span&gt;&lt;font color="#0000ff"&gt;&amp;lt;/&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#a31515"&gt;TargetFrameworkProfile&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:12pt;"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;
&lt;li&gt;Remove the &amp;lt;ProductVersion&amp;gt; and &amp;lt;SchemaVersion elements:&lt;br /&gt;&lt;br /&gt;&lt;font face="Consolas"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size:12pt;"&gt;&amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:12pt;"&gt;&lt;span&gt;&lt;font color="#a31515"&gt;ProductVersion&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;8.0.30703&lt;span&gt;&lt;font color="#0000ff"&gt;&amp;lt;/&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#a31515"&gt;ProductVersion&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#a31515"&gt;SchemaVersion&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;2.0&lt;span&gt;&lt;font color="#0000ff"&gt;&amp;lt;/&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#a31515"&gt;SchemaVersion&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;
&lt;li&gt;Change the &amp;lt;Import&amp;gt; element just before the closing tag of the &amp;lt;Project&amp;gt; element to the . &lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:12pt;"&gt;&lt;span&gt;&lt;font color="#000000" face="Calibri"&gt;In C# replace&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;pre style="list-style-type:disc;background:white;"&gt;&lt;font face="Consolas"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size:12pt;"&gt;&amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:12pt;"&gt;&lt;span&gt;&lt;font color="#a31515"&gt;Import&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#ff0000"&gt;Project&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&amp;quot;&lt;span&gt;&lt;font color="#0000ff"&gt;$(MSBuildToolsPath)\Microsoft.CSharp.targets&lt;/font&gt;&lt;/span&gt;&amp;quot;&lt;span&gt;&lt;font color="#0000ff"&gt; /&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;&lt;pre style="list-style-type:disc;background:white;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:12pt;"&gt;&lt;span&gt;&lt;font color="#000000" face="Calibri"&gt;with&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;&lt;pre style="list-style-type:disc;background:white;"&gt;&lt;font face="Consolas"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size:12pt;"&gt;&amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:12pt;"&gt;&lt;span&gt;&lt;font color="#a31515"&gt;Import&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#ff0000"&gt;Project&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&amp;quot;&lt;span&gt;&lt;font color="#0000ff"&gt;$(MSBuildExtensionsPath32)\Microsoft\Portable\$(TargetFrameworkVersion)\Microsoft.Portable.CSharp.targets&lt;/font&gt;&lt;/span&gt;&amp;quot;&lt;span&gt;&lt;font color="#0000ff"&gt; /&amp;gt;&lt;/font&gt;&lt;/span&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:12pt;"&gt;&lt;span&gt;&lt;font color="#000000" face="Calibri"&gt;In Visual Basic replace&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;pre style="list-style-type:disc;background:white;"&gt;&lt;font face="Consolas"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size:12pt;"&gt;&amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:12pt;"&gt;&lt;span&gt;&lt;font color="#a31515"&gt;Import&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#0000ff"&gt; &lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#ff0000"&gt;Project&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&amp;quot;&lt;span&gt;&lt;font color="#0000ff"&gt;$(MSBuildToolsPath)\Microsoft.VisualBasic.targets&lt;/font&gt;&lt;/span&gt;&amp;quot;&lt;span&gt;&lt;font color="#0000ff"&gt; /&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;&lt;pre style="list-style-type:disc;background:white;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:12pt;"&gt;&lt;span&gt;&lt;font color="#000000" face="Calibri"&gt;with&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;&lt;pre style="list-style-type:disc;background:white;"&gt;&lt;font face="Consolas"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size:12pt;"&gt;&amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:12pt;"&gt;&lt;span&gt;&lt;font color="#a31515"&gt;Import&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#0000ff"&gt; &lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#ff0000"&gt;Project&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&amp;quot;&lt;span&gt;&lt;font color="#0000ff"&gt;$(MSBuildExtensionsPath32)\Microsoft\Portable\$(TargetFrameworkVersion)\Microsoft.Portable.VisualBasic.targets&lt;/font&gt;&lt;/span&gt;&amp;quot;&lt;span&gt;&lt;font color="#0000ff"&gt; /&amp;gt;&lt;/font&gt;&lt;/span&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;&lt;pre style="list-style-type:disc;background:white;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:12pt;"&gt;&lt;span&gt;&lt;font color="#000000" face="Calibri"&gt;&lt;/pre&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/li&gt;
&lt;ul&gt;&lt;/ul&gt;&lt;/ul&gt;
&lt;li&gt;Remove the following code from AssemblyInfo.cs (or the equivalent from AssemblyInfo.vb)&lt;/li&gt;&lt;pre style="background:white;"&gt;&lt;font face="Consolas"&gt;&lt;span&gt;&lt;font color="#008000"&gt;&lt;font style="font-size:12pt;"&gt;// Setting ComVisible to false makes the types in this assembly not visible &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:12pt;"&gt;
&lt;span&gt;&lt;font color="#008000"&gt;// to COM components.  If you need to access a type in this assembly from &lt;/font&gt;&lt;/span&gt;
&lt;span&gt;&lt;font color="#008000"&gt;// COM, set the ComVisible attribute to true on that type.&lt;/font&gt;&lt;/span&gt;
[&lt;span&gt;&lt;font color="#0000ff"&gt;assembly&lt;/font&gt;&lt;/span&gt;: ComVisible(&lt;span&gt;&lt;font color="#0000ff"&gt;false&lt;/font&gt;&lt;/span&gt;)]
 
&lt;span&gt;&lt;font color="#008000"&gt;// The following GUID is for the ID of the typelib if this project is exposed to COM&lt;/font&gt;&lt;/span&gt;
[&lt;span&gt;&lt;font color="#0000ff"&gt;assembly&lt;/font&gt;&lt;/span&gt;: Guid(&lt;span&gt;&lt;font color="#a31515"&gt;&amp;quot;1e49a9ca-89db-46d1-9704-b76e10897ffb&amp;quot;&lt;/font&gt;&lt;/span&gt;)]&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;
&lt;li&gt;Reload the project by right-clicking the project and selecting the menu item&lt;/li&gt;&lt;/ol&gt;
&lt;p&gt;Please note that this is not an official and therefore not supported migration. No guarantees and make sure you have backups, checkins et cetera before you undertake this conversion.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.alexthissen.nl/aggbug.aspx?PostID=22576" width="1" height="1"&gt;</description><category domain="http://www.alexthissen.nl/blogs/main/archive/tags/Gaming/default.aspx">Gaming</category><category domain="http://www.alexthissen.nl/blogs/main/archive/tags/Visual+Studio+2010/default.aspx">Visual Studio 2010</category><category domain="http://www.alexthissen.nl/blogs/main/archive/tags/Windows+Phone/default.aspx">Windows Phone</category><category domain="http://www.alexthissen.nl/blogs/main/archive/tags/Xbox+360/default.aspx">Xbox 360</category></item><item><title>Running Atari Lynx emulator on a Windows Phone 7</title><link>http://www.alexthissen.nl/blogs/atarilynx/archive/2011/07/06/running-atari-lynx-emulator-on-a-windows-phone-7.aspx</link><pubDate>Wed, 06 Jul 2011 20:00:00 GMT</pubDate><guid isPermaLink="false">badf6229-ffeb-484a-8c5a-fc9c9987c8f2:22575</guid><dc:creator>Alex Thissen</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;The implementation of the emulator for the Atari Lynx has been progressing steadily. I thought it would be a good time to show a particular point of progress: a working implementation of the emulator running on a Windows Phone 7. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;(Please visit the site to view this media)&lt;/p&gt;
&lt;div&gt;Update: here is another video of the emulator running in Windows Phone 7 emulator.&lt;/div&gt;
&lt;p&gt;&amp;nbsp;(Please visit the site to view this media)&lt;/p&gt;
&lt;p&gt;Some details:&lt;/p&gt;
&lt;p&gt;The emulator core is used in a &lt;a target="_blank" href="http://www.microsoft.com/download/en/details.aspx?id=23714"&gt;XNA Game Studio 4.0&lt;/a&gt; implementation for Windows, Phone 7 and Xbox 360 client. The Windows and Phone 7 implementations work correctly (give and take the remaining bugs and mayor performance issues), but the Xbox 360 variant doesn&amp;rsquo;t work. &lt;/p&gt;
&lt;p&gt;As you can see in the video the framerate is pretty dramatic with an estimate of 2 fps (where 0.2 would probably be more accurate). The Windows version can run at 60 fps, but the Windows Phone 7 doesn&amp;rsquo;t even come close. The Windows Phone 7 emulator can run most games at 25 fps. This is something that needs to be investigated. There were no performance optimizations made just yet.&lt;/p&gt;
&lt;p&gt;You can find the source code for the emulator at &lt;a target="_blank" href="http://lynxemulator.codeplex.com"&gt;lynxemulator.codeplex.com&lt;/a&gt;. Suggestions for improvement are very welcome.&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="http://pepijnsitter.wordpress.com/author/pepijnsitter/"&gt;Pepijn Sitter&lt;/a&gt; helped develop part of this code. He refactored the controller handling implementation and did some first, rough implementation of the gestures for the Phone, so we could at least get past the start screen. (Which didn&amp;rsquo;t work out as expected). Thanks Pepijn.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.alexthissen.nl/aggbug.aspx?PostID=22575" width="1" height="1"&gt;</description><category domain="http://www.alexthissen.nl/blogs/atarilynx/archive/tags/Development/default.aspx">Development</category><category domain="http://www.alexthissen.nl/blogs/atarilynx/archive/tags/Emulation/default.aspx">Emulation</category></item><item><title>Compiling Handy 0.95 for Windows</title><link>http://www.alexthissen.nl/blogs/atarilynx/archive/2011/06/20/compiling-handy-0-95-for-windows.aspx</link><pubDate>Mon, 20 Jun 2011 08:25:20 GMT</pubDate><guid isPermaLink="false">badf6229-ffeb-484a-8c5a-fc9c9987c8f2:22573</guid><dc:creator>Alex Thissen</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Quick runthrough to get the Handy sources to compile for Windows using Microsoft Visual Studio 2010 (or Microsoft Visual C++ 2010 Express, which is a free download).&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/handylogo_5F00_69FF22D3.jpg"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="handylogo" border="0" alt="handylogo" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/handylogo_5F00_thumb_5F00_1AD1B472.jpg" width="486" height="142" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Download these first:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://sourceforge.net/projects/handy/files/handy/Handy%200.95/" target="_blank"&gt;Handy source code&lt;/a&gt; (Handy-win32src-0.95.zip contains the sources)&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.microsoft.com/visualstudio/en-us/products/2010-editions/visual-cpp-express" target="_blank"&gt;Microsoft Visual C++ 2010 Express&lt;/a&gt; (in case you do not own a copy of Visual Studio that includes C++)&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=3904b19a-02b9-447b-ab58-c12e2456e9ba" target="_blank"&gt;DirectX 9.0 Software Development Kit Update (August 2005)&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Install Visual C++ and the DirectX SDK. Unpack the sources of Handy. &lt;/p&gt;  &lt;p&gt;Open the folder of the Handy sources and find the Handy.dsp file. Doubleclick to the open it in Visual C++. It will prompt you to convert the project. Choose Yes in the dialog.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/image_5F00_1D2B3670.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/image_5F00_thumb_5F00_0A0A09C4.png" width="436" height="263" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Save the solution. You must specify the location of the .sln solution file. The root of the project will be an appropriate location.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/image_5F00_48EB6492.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/image_5F00_thumb_5F00_661D1E6A.png" width="640" height="340" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Right-click the Handy project and open the Properties dialog. Go to the C/C++ section and enter a new entry under “Additional Include Directories”. This should be “C:\Program Files (x86)\Microsoft DirectX 9.0 SDK (August 2005)\Include” if you installed the DirectX 9 SDK to the default installation directory.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/image_5F00_16FBC1D7.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/image_5F00_thumb_5F00_31F4454B.png" width="640" height="168" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Next, go to the Linker section and add “C:\Program Files (x86)\Microsoft DirectX 9.0 SDK (August 2005)\Lib\x86” to the “Additional Libraries Directories”.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/image_5F00_06CBE5DF.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/image_5F00_thumb_5F00_390F6DC4.png" width="640" height="208" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;When you first try to compile the sources you will get a number of errors. Fix each of these, bullet by bullet and recompile in between:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;22 errors: error C1083: Cannot open include file: &amp;#39;strstrea.h&amp;#39;: No such file or directory     &lt;br /&gt;Apply fix 1.&lt;/li&gt;    &lt;li&gt;96 errors: related to endl, ostream&amp;amp;, ostrstream and ostrstream&amp;amp; references and declarations in error.h     &lt;br /&gt;Apply fix 2.&lt;/li&gt;    &lt;li&gt;43 errors: &lt;/li&gt;    &lt;p&gt;error C4430: missing type specifier - int assumed. Note: C++ does not support default-int     &lt;br /&gt;error C2664: &amp;#39;CWnd::OnActivateApp&amp;#39; : cannot convert parameter 2 from &amp;#39;HTASK&amp;#39; to &amp;#39;DWORD&amp;#39;      &lt;br /&gt;error C2440: &amp;#39;static_cast&amp;#39; : cannot convert from &amp;#39;void (__thiscall CLynxWindow::* )(WPARAM,LPARAM)&amp;#39; to &amp;#39;LRESULT (__thiscall CWnd::* )(WPARAM,LPARAM)&amp;#39;      &lt;br /&gt;error C2065: &amp;#39;loop&amp;#39; : undeclared identifier      &lt;br /&gt;error C2065: &amp;#39;endl&amp;#39; : undeclared identifier&lt;/p&gt;    &lt;p&gt;Apply fixes 2 to 6&lt;/p&gt; &lt;/ul&gt;  &lt;p&gt;This is the list of fixes you will need to make to get the sources to compile.&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Replace #include “strstrea.h” in error.h with these two lines:&lt;/li&gt;    &lt;pre&gt;#include &amp;lt;iostream&amp;gt;
#include &amp;lt;strstream&amp;gt;&lt;/pre&gt;

  &lt;li&gt;Prefix ostream&amp;amp;, ostrstream and ostrstream&amp;amp; declarations with:&lt;/li&gt;

  &lt;pre&gt;&lt;strong&gt;std::&lt;/strong&gt;&lt;/pre&gt;

  &lt;li&gt;Change line 1192 in Lynxwin.cpp to &lt;/li&gt;

  &lt;pre&gt;static bool firsttime=0;&lt;/pre&gt;

  &lt;li&gt;Change HTASK hTask in line 2365 of Lynxwin.cpp and line 325 of Lynxwin.h to&lt;/li&gt;

  &lt;pre&gt;&lt;strong&gt;DWORD hTask&lt;/strong&gt;&lt;/pre&gt;

  &lt;li&gt;Comment out the lines 868 and 869 of Lynxwin.cpp. I do not know how to really fix these errors yet.&lt;/li&gt;

  &lt;li&gt;Add a new line at 1552 in Lynxwin.cpp with:&lt;/li&gt;

  &lt;pre&gt;ULONG loop=0;&lt;/pre&gt;

  &lt;li&gt;Change line 95 of Debuggerwin.cpp to:&lt;/li&gt;

  &lt;pre&gt;for(int loop=0;loop&amp;lt;mWinHeight;loop++) LineOutput(&amp;quot;&amp;quot;);&lt;/pre&gt;

  &lt;li&gt;Change line 550 of Debuggerwin.cpp to these two:&lt;/li&gt;

  &lt;pre&gt;int loop;
for(loop=0;loop&amp;lt;mLineInput-1;loop++)&lt;/pre&gt;

  &lt;li&gt;Change line 487 of codewin.cpp to these two:&lt;/li&gt;

  &lt;pre&gt;int loop;
for(loop=0;loop&amp;lt;MAX_CPU_BREAKPOINTS;loop++)&lt;/pre&gt;
&lt;/ol&gt;

&lt;p&gt;After that you should have a Handy C++ project that compiles, links and runs correctly.&lt;/p&gt;

&lt;p&gt;For the developer version of Handy you should add a preprocessor definition _LYNXDBG to the project:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/image_5F00_0D0EA86E.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/image_5F00_thumb_5F00_3E1DBD41.png" width="640" height="195" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The developer version gives you a Code, Debugger and Graphics dump window and ability to debug/step-through the 65SC02 code.&lt;/p&gt;

&lt;p&gt;You will also get new compile errors. To fix these, apply fix 7 to 9 to get rid of those.&lt;/p&gt;

&lt;p&gt;Run the Handy emulator, find yourself LYNXBOOT.IMG if you have got the boot image and some rom images for (homebrew) games.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/image_5F00_19F5105A.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/image_5F00_thumb_5F00_711D4946.png" width="640" height="360" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For your convenience, you can download the revised sources here: &lt;a title="http://www.alexthissen.nl/media/p/22572.aspx" href="http://www.alexthissen.nl/media/p/22572.aspx"&gt;http://www.alexthissen.nl/media/p/22572.aspx&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.alexthissen.nl/aggbug.aspx?PostID=22573" width="1" height="1"&gt;</description><category domain="http://www.alexthissen.nl/blogs/atarilynx/archive/tags/Development/default.aspx">Development</category></item><item><title>SDN Event June 2011: ASP.NET Web Pages Framework for ASP.NET developers</title><link>http://www.alexthissen.nl/blogs/main/archive/2011/06/20/sdn-event-june-2011-asp-net-web-pages-framework-for-asp-net-developers.aspx</link><pubDate>Mon, 20 Jun 2011 05:43:22 GMT</pubDate><guid isPermaLink="false">badf6229-ffeb-484a-8c5a-fc9c9987c8f2:22570</guid><dc:creator>Alex Thissen</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Last Friday saw another edition of a &lt;a href="http://www.sdn.nl/SDN/" target="_blank"&gt;Software Development Network&lt;/a&gt;&amp;#160;&lt;a href="http://www.sdn.nl/SDN/SDNEvent/Events2011/SDNEventjuni2011/tabid/205/Default.aspx" target="_blank"&gt;Event&lt;/a&gt;. A number of great sessions were on the list. I got to see &lt;a href="http://blogs.infosupport.com/blogs/marcelv/" target="_blank"&gt;Marcel de Vries&lt;/a&gt;’s session on combined development for Windows Phone 7, Android and iOS. I must say I was impressed with the state of tooling for Mono for Android and MonoTouch (for iOS). &lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/main/image_5F00_717E0311.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/main/image_5F00_thumb_5F00_3542119C.png" width="595" height="58" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;My session for the SDN Event was on the ASP.NET Web Pages Framework. In it I show &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;what this new framework is, &lt;/li&gt;    &lt;li&gt;how it relates to ASP.NET WebForms, MVC and WebMatrix &lt;/li&gt;    &lt;li&gt;how to build applications with it &lt;/li&gt;    &lt;li&gt;introduction to Razor (see also my DevDays 2011 session on “Introduction to Razor” for more information on Razor) &lt;/li&gt;    &lt;li&gt;what the new concepts like “page hierarchies”, UrlData and PageData are &lt;/li&gt;    &lt;li&gt;working with models and model state (and how this is different than the model from MVC) &lt;/li&gt;    &lt;li&gt;automatic routing&lt;/li&gt;    &lt;li&gt;some more&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;If you couldn’t make it, feel free to take a look at the &lt;a href="http://www.alexthissen.nl/media/p/22568.aspx" target="_blank"&gt;slides&lt;/a&gt; and the &lt;a href="http://www.alexthissen.nl/media/p/22569.aspx" target="_blank"&gt;demos&lt;/a&gt;. Thanks everyone who attended the session. Hopefully you found it useful.&lt;/p&gt;  &lt;p&gt;I missed the session of &lt;a href="http://pepijnsitter.wordpress.com/author/pepijnsitter/" target="_blank"&gt;Pepijn Sitter&lt;/a&gt; on XNA Game development for the Windows Phone 7, because he shared the timeslot with my own session. Luckily for me I had a chance to meet him before his session. We had a very enthusiastic talk on games, game development, the fun of it all and his Ms. Pacman implementation with XNA for XBox360 and Windows Phone 7. Brilliant stuff.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.alexthissen.nl/aggbug.aspx?PostID=22570" width="1" height="1"&gt;</description></item><item><title>Come Lynx with me</title><link>http://www.alexthissen.nl/blogs/atarilynx/archive/2011/05/31/come-lynx-with-me.aspx</link><pubDate>Tue, 31 May 2011 20:03:06 GMT</pubDate><guid isPermaLink="false">badf6229-ffeb-484a-8c5a-fc9c9987c8f2:22567</guid><dc:creator>Alex Thissen</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;One of the differentiating features of the Atari Lynx was its ability to link together up to 18 Lynx devices using a set of cables. This allows for multiplayer games, &lt;/p&gt;  &lt;p&gt;You need at least two Lynx devices and at least one ComLynx cable to make a connection. For more Lynxes you require an additional ComLynx cable for every extra Lynx. The ComLynx cable has two male connectors at either end. One end has a split cable with a female connector. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/IMAG1690_5F00_22FE3BD6.jpg"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="IMAG1690" border="0" alt="IMAG1690" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/IMAG1690_5F00_thumb_5F00_690EF8E9.jpg" width="244" height="148" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The single male side of a new cable can be connected to the female connector and to the next Lynx at the split end. This way you can connect an potentially unlimited chain of Lynxes. The practical limit is around 18 because of communication overhead and something called “pull-ups”.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/IMAG1686_5F00_28D8DF6F.jpg"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="IMAG1686" border="0" alt="IMAG1686" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/IMAG1686_5F00_thumb_5F00_68A2C5F4.jpg" width="125" height="70" /&gt;&lt;/a&gt;&lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/IMAG1684_5F00_286CAC7A.jpg"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="IMAG1684" border="0" alt="IMAG1684" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/IMAG1684_5F00_thumb_5F00_3A494047.jpg" width="125" height="70" /&gt;&lt;/a&gt;&lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/IMAG1684_5F00_7A1326CC.jpg"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="IMAG1684" border="0" alt="IMAG1684" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/IMAG1684_5F00_thumb_5F00_20E13D0D.jpg" width="125" height="70" /&gt;&lt;/a&gt;&lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/IMAG1684_5F00_19C20095.jpg"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="IMAG1684" border="0" alt="IMAG1684" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/IMAG1684_5F00_thumb_5F00_6E7D698D.jpg" width="125" height="70" /&gt;&lt;/a&gt;&lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/IMAG1684_5F00_2E475013.jpg"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="IMAG1684" border="0" alt="IMAG1684" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/IMAG1684_5F00_thumb_5F00_4023E3E0.jpg" width="125" height="70" /&gt;&lt;/a&gt; and so on.&lt;/p&gt;  &lt;p&gt;There were several games that used this capability for multiplayer support. Each Lynx will need a separate copy of the game. There is a possibility to game&lt;/p&gt;  &lt;table border="0" cellspacing="0" cellpadding="2" width="573"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="246"&gt;         &lt;p&gt;&lt;strong&gt;Title&lt;/strong&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="51"&gt;         &lt;p&gt;&lt;strong&gt;Players&lt;/strong&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="220"&gt;         &lt;p&gt;&lt;strong&gt;Title&lt;/strong&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="54"&gt;         &lt;p&gt;&lt;strong&gt;Players&lt;/strong&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="242"&gt;         &lt;p&gt;Awesome Golf &lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="55"&gt;         &lt;p&gt;1-4&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="217"&gt;         &lt;p&gt;Pit-Fighter&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="57"&gt;         &lt;p&gt;1-2&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="239"&gt;         &lt;p&gt;Baseball Heroes&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="58"&gt;         &lt;p&gt;1-2&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="214"&gt;         &lt;p&gt;Raiden&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="60"&gt;         &lt;p&gt;1-2&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="236"&gt;         &lt;p&gt;Basketbrawl&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="61"&gt;         &lt;p&gt;1-2&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="212"&gt;         &lt;p&gt;Rampage&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="62"&gt;         &lt;p&gt;1-4&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="234"&gt;         &lt;p&gt;Battlewheels&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="63"&gt;         &lt;p&gt;1-6&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="211"&gt;         &lt;p&gt;Rampart&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="63"&gt;         &lt;p&gt;1-2&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="233"&gt;         &lt;p&gt;Battlezone 2000&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="65"&gt;         &lt;p&gt;1-4&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="210"&gt;         &lt;p&gt;Robo-squash&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="64"&gt;         &lt;p&gt;1-2&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="232"&gt;         &lt;p&gt;Bill and Ted’s Excellent Adventure&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="66"&gt;         &lt;p&gt;1-2&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="209"&gt;         &lt;p&gt;Shanghai&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="65"&gt;         &lt;p&gt;1-2&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="231"&gt;         &lt;p&gt;California Games&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="67"&gt;         &lt;p&gt;1-4&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="208"&gt;         &lt;p&gt;Super Off-Road&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="66"&gt;         &lt;p&gt;1-4&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="230"&gt;         &lt;p&gt;Checkered Flag&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="68"&gt;         &lt;p&gt;1-6&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="208"&gt;         &lt;p&gt;Super Skweek&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="67"&gt;         &lt;p&gt;1-2&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="230"&gt;         &lt;p&gt;Double Dragon&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="68"&gt;         &lt;p&gt;1-2&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="207"&gt;         &lt;p&gt;Todd’s Adventures in Slime World&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="67"&gt;         &lt;p&gt;1-8&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="230"&gt;         &lt;p&gt;European Soccer Challenge&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="68"&gt;         &lt;p&gt;1-2&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="207"&gt;         &lt;p&gt;Tournament Cyberball 2072&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="67"&gt;         &lt;p&gt;1-4&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="230"&gt;         &lt;p&gt;Gauntlet: The Third Encounter&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="68"&gt;         &lt;p&gt;1-4&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="207"&gt;         &lt;p&gt;Turbo Sub&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="67"&gt;         &lt;p&gt;1-2&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="230"&gt;         &lt;p&gt;Hockey&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="68"&gt;         &lt;p&gt;1-2&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="207"&gt;         &lt;p&gt;Warbirds&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="67"&gt;         &lt;p&gt;1-4&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="230"&gt;         &lt;p&gt;Jimmy Connors Tennis&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="68"&gt;         &lt;p&gt;1-4&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="207"&gt;         &lt;p&gt;World Class Soccer&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="67"&gt;         &lt;p&gt;1-2&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="230"&gt;         &lt;p&gt;Joust&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="68"&gt;         &lt;p&gt;1-2&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="207"&gt;         &lt;p&gt;Xenophobe&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="67"&gt;         &lt;p&gt;1-4&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="230"&gt;         &lt;p&gt;Lynx Casino&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="68"&gt;         &lt;p&gt;1-2&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="207"&gt;         &lt;p&gt;Xybots&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="67"&gt;         &lt;p&gt;1-2&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="230"&gt;         &lt;p&gt;Malibu Bikini Volleyball&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="68"&gt;         &lt;p&gt;1-4&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="207"&gt;         &lt;p&gt;Zarlor Mercenary&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="67"&gt;         &lt;p&gt;1-4&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="230"&gt;         &lt;p&gt;NFL Football&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="69"&gt;         &lt;p&gt;1-2&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="213"&gt;&amp;nbsp;&lt;/td&gt;        &lt;td valign="top" width="69"&gt;&amp;nbsp;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;The ComLynx-able games can be recognized by the yellow triangle at the bottom-right corner of the box. This shows that players can “Lynx Up” and the maximum number of players. The game “California Games” is an exception, in that is says “1 To 2 Players” on the box, where a total number of 4 players are possible.&lt;/p&gt;  &lt;p&gt;&lt;img border="0" alt="Todd&amp;#39;s Adventures in Slime World - Box Front" src="http://www.atariage.com/Lynx/boxes/b_ToddsAdventuresInSlimeWorld_front.jpg" width="191" height="230" /&gt; and pay special attention to the corner. &lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/image_5F00_66F1FA20.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/image_5F00_thumb_5F00_05C86DFF.png" width="244" height="231" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Here is a video that shows two Lynxes connected together:&lt;/p&gt;  &lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:b6337df4-367f-4571-a18f-2afaeeeedee9" class="wlWriterEditableSmartContent"&gt;&lt;div&gt;&lt;a href="http://www.youtube.com/watch?v=xikzrc0BgfA" target="_new"&gt;&lt;img src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/videobc0298ec3ab1_5F00_239C70D8.jpg" style="border-style:none;" alt="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="width:448px;clear:both;font-size:.8em;"&gt;Atari Lynx version I and version II ComLynxed together&lt;/div&gt;&lt;/div&gt;  &lt;p&gt;Remarks found all over the Internet:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;“The ComLynx does not have any hardware bugs. But the format is pretty much fixed to start bit, 8 data bits, even parity, 1 stop bit. And the only sensible baud rates are 9600 and 62500. The ComLynx has a combined Rx/Tx pin and it can sense if two Lynxes transmit at the same time. … The Lynx has +5V on one pin that is enough to power up the communications cable.” – &lt;a href="http://www.atariage.com/forums/topic/65776-red-eye-protocol-for-commlynx/" target="_blank"&gt;AtariAge forums&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;“&lt;a href="http://en.wikipedia.org/wiki/ComLynx"&gt;ComLynx&lt;/a&gt; was originally developed to run over infrared links (and was codenamed RedEye).&lt;sup&gt;&lt;a href="http://en.wikipedia.org/wiki/#cite_note-3"&gt;[4]&lt;/a&gt;&lt;/sup&gt; This was changed to a cable-based networking system before the final release.” – &lt;a href="http://en.wikipedia.org/wiki/Atari_Lynx" target="_blank"&gt;Wikipedia&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;“UART (for ComLynx) (fixed format 8E1, up to 62500 Bd)” – &lt;a href="http://en.wikipedia.org/wiki/Atari_Lynx" target="_blank"&gt;Wikipedia&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;img style="margin:10px 10px 10px 0px;display:inline;float:right;" align="right" src="http://www.mr-atari.com/afbeeldingen/lynx%20cable%20box.jpg" width="97" height="410" alt="" /&gt;&lt;/p&gt;  &lt;p&gt;Bugs in the ComLynx (from the Lynx development manual):&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;“A design error causes the power up state of the output to be TTL high, ALL code must set the TXOPEN bit in order to fix this&amp;quot; &lt;/li&gt;    &lt;li&gt;&amp;quot;Well, we did screw something up after all. Both the transmit and receive interrupts are &amp;#39;level&amp;#39; sensitive, rather than &amp;#39;edge&amp;#39; sensitive&amp;quot; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Links that seemed useful to me:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a title="http://www.monlynx.de/lynx/lynx8a.html#_11" href="http://www.monlynx.de/lynx/lynx8a.html#_11"&gt;http://www.monlynx.de/lynx/lynx8a.html#_11&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a title="http://www.freebsd.org/doc/en_US.ISO8859-1/articles/serial-uart/index.html" href="http://www.freebsd.org/doc/en_US.ISO8859-1/articles/serial-uart/index.html"&gt;http://www.freebsd.org/doc/en_US.ISO8859-1/articles/serial-uart/index.html&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a title="http://www.atariage.com/forums/topic/166164-new-usb-serial-to-comlynx-adapter/" href="http://www.atariage.com/forums/topic/166164-new-usb-serial-to-comlynx-adapter/"&gt;http://www.atariage.com/forums/topic/166164-new-usb-serial-to-comlynx-adapter/&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a title="http://www.classicgamedev.com/Blog:Hacking_Classics/USB_Serial_to_ComLynx_Adapter" href="http://www.classicgamedev.com/Blog:Hacking_Classics/USB_Serial_to_ComLynx_Adapter"&gt;http://www.classicgamedev.com/Blog:Hacking_Classics/USB_Serial_to_ComLynx_Adapter&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Here are some observations I made, which I hadn’t read on the Internet anywhere:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Some (maybe all?) ComLynx-able games can connect players while the start-menu/animations is displayed.      &lt;br /&gt;In other words: as long as no player has started the game, other players can join by switching their Lynx on. Bear in mind the next observation. I always believed that the Lynxes needed to be powered on at the (near-exact) same time. &lt;/li&gt;    &lt;li&gt;When multiple Lynxes are linked together, the outsides of the chain can switch off, without disrupting the other connected Lynxes. The same goes for switching the Lynxes on at a later time (see previous point) &lt;/li&gt;    &lt;li&gt;You can &lt;a href="http://www.classicgamedev.com/Lynx:Disable_cart_detection" target="_blank"&gt;disable the cartridge detection&lt;/a&gt; of the Lynx. In theory this should allow for multiple Lynxes to connect on one cartridge, provided that the Lynx have detection disabled and that the cartridge is read only at the startup of the game. Did anyone try this?&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;From the Lynx Frequently Asked Questions:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;em&gt;Q. What does &amp;quot;ComLynx&amp;quot; mean, exactly?        &lt;br /&gt;&lt;/em&gt;&lt;/strong&gt;A. Some Lynx games allow multiple players to play together simultaneously. This works when each player has a Lynx game machine, and all of the machines are connected to each other via cables. The connection is the ComLynx port, and the cables are ComLynx cables. Games that support this mutiplayer simultaneous play are usually identified by the phrase &amp;quot;1 to N players Lynx up&amp;quot; on the box, the instruction manual, and/or the game card. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;em&gt;Q. Do all players &amp;quot;Lynxed up&amp;quot; via the ComLynx need a copy of the game being played?        &lt;br /&gt;&lt;/em&gt;&lt;/strong&gt;A. Yes. All players need a copy of the game card. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;em&gt;Q. What&amp;#39;s the ComLynx port like? &lt;/em&gt;&lt;/strong&gt;    &lt;br /&gt;A. There is limit of 18 players via ComLynx. In practice it may be possible to connect more units together, but to operate within specifications, the drivers in the Lynx cannot drive over more than 17 units with pull-ups on the serial ports. ComLynx runs from 300.5 to 62.5K baud. It works on a &amp;quot;listen and send&amp;quot; structure. Data transmission between Lynxes is done in the background, freeing up the CPU to run the game instead of communicating. It&amp;#39;s called &amp;quot;RedEye&amp;quot; in-house at Atari, named after an early idea of having Lynxes communicate with infra-red transmissions. It uses a three-wire cable (+5V/Ground/Data) and allows for bi- directional serial communications. The system frames messages in terms of 11-bit words, each consisting of a start bit, eight data bits, a parity bit, and a stop bit. The ComLynx port is used solely for communications; it can&amp;#39;t be used to control other aspects of the Lynx, though in theory it can be used to send signals to external devices. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;em&gt;Q. Sometimes a multiplayer ComLynx game will freeze up. Why?        &lt;br /&gt;&lt;/em&gt;&lt;/strong&gt;A. A ComLynxed game will freeze if communication between the Lynxes is interrupted. If communications can be restored, the game will continue. The most common cause of this problem is a fray in one of the ComLynx cables, or a loose seating in one of the ComLynx jacks. Communication is broken, and the game &amp;quot;freezes&amp;quot;. Jiggling the cable or reseating the jacks may fix the solution temporarily, but the best cure is a new cable. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;em&gt;Q. I hear there&amp;#39;s a ComLynx port on the Atari Jaguar. How does that work? Can I connect my Lynx to it? Will there be a Lynx adaptor for the Jaguar?        &lt;br /&gt;&lt;/em&gt;&lt;/strong&gt;A. The ComLynx port allows communication between Jaguar units and Lynx units. In theory, it would be possible to daisy-chain multiple units of either machine type for multiplayer games. At the current time, however, no such plans are in the works. Instead, it is seen as allowing Lynxes to be used as peripherals: software can be developed to allow Lynxes to be part of a Jaguar game as controllers. An adaptor to allow the Jaguar to play Lynx games is not currently planned.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.alexthissen.nl/aggbug.aspx?PostID=22567" width="1" height="1"&gt;</description></item><item><title>Choosing from all the great sessions at the Dutch Developer Days 2011</title><link>http://www.alexthissen.nl/blogs/main/archive/2011/04/19/choosing-from-all-the-great-sessions-at-the-dutch-developer-days-2011.aspx</link><pubDate>Tue, 19 Apr 2011 05:44:37 GMT</pubDate><guid isPermaLink="false">badf6229-ffeb-484a-8c5a-fc9c9987c8f2:22566</guid><dc:creator>Alex Thissen</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;The organization of the Microsoft Developer Days has an outstanding reputation for selecting excellent speakers from abroad and both new and well known speakers in The Netherlands. This year I intend to go see more sessions than in previous years. It is hard to choose from all of the sessions that are listed. Instead of randomly picking from that list, I first came up with a strategy to select them. It turned out to be a criteria list that should help prioritize sessions.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;em&gt;Strategic initiative from Microsoft        &lt;br /&gt;&lt;/em&gt;If there is a session on Windows Azure, Windows Phone or the next version of some product&lt;/li&gt;    &lt;li&gt;&lt;em&gt;Practice over theory        &lt;br /&gt;&lt;/em&gt;I guess that you can go a long way by following the training kits, blogs and documentation on new platforms, frameworks and technologies. The lessons learned by using these in real-life/business scenarios is a lot harder to come by. &lt;/li&gt;    &lt;li&gt;&lt;em&gt;New and broad information over in-depth information (on topics that are known already)        &lt;br /&gt;&lt;/em&gt;Learning new things gets preference over going deeper into topics I already feel comfortable with &lt;/li&gt;    &lt;li&gt;&lt;em&gt;Speaker&amp;#160; reputation&lt;/em&gt;      &lt;br /&gt;Some speakers are a delight to go see. If none of the above make a difference or end in a tie, I will decide based on the speaker. This can be based on entertainment value, technical accuracy or experiences in the past. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/main/image_5F00_27B03875.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/main/image_5F00_thumb_5F00_7956B2C7.png" width="690" height="103" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h2&gt;Developer Days - 1&lt;/h2&gt;  &lt;table border="0" cellspacing="0" cellpadding="2" width="730"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="127"&gt;9:15 – 10:45&lt;/td&gt;        &lt;td valign="top" width="601"&gt;The easiest timeslot to choose a session: the keynote &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="127"&gt;11:05 – 12:20&lt;/td&gt;        &lt;td valign="top" width="601"&gt;         &lt;ol&gt;           &lt;li&gt;&lt;a href="http://www.techdays.nl/SessieDetails.aspx?cid=1317"&gt;What&amp;#39;s New in SQL Server &amp;quot;Denali&amp;quot; for Developers?&lt;/a&gt;, Paul van Wingerden.              &lt;br /&gt;New technology and I’m very rusty on the developer side of SQL Server. Catching up required.&lt;/li&gt;            &lt;li&gt;&lt;a href="http://www.techdays.nl/SessieDetails.aspx?cid=1518"&gt;Windows Phone 7 (title to be disclosed after MIX)&lt;/a&gt;, Ben Riga:               &lt;br /&gt;Summary of WP7 as discussed at Mix 2011. Should save a lot of time viewing this session instead of the &lt;a href="http://channel9.msdn.com/Events/MIX/MIX11" target="_blank"&gt;recorded videos at Channel 9&lt;/a&gt;&lt;/li&gt;            &lt;li&gt;&lt;a href="http://www.techdays.nl/SessieDetails.aspx?cid=1513"&gt;MVC 3 – 101&lt;/a&gt;, Scott Hanselman              &lt;br /&gt;Guaranteed fun and overview of MVC3 to boot&lt;/li&gt;         &lt;/ol&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="127"&gt;13:30 – 14:45&lt;/td&gt;        &lt;td valign="top" width="601"&gt;         &lt;ol&gt;           &lt;li&gt;&lt;a href="http://www.techdays.nl/SessieDetails.aspx?cid=1515"&gt;Reactive Extensions for .NET for the Rest of Us&lt;/a&gt;, Mike Taulty              &lt;br /&gt;Mike is an excellent speaker with loads of high-speed demos and more information than a human could handle in one hour.&lt;/li&gt;            &lt;li&gt;&lt;a href="http://www.techdays.nl/SessieDetails.aspx?cid=1524"&gt;Windows Azure AppFabric: Building, Managing, and Connecting High-Density, Multi-Tenant Cloud Applications &lt;/a&gt;, Clemens Vasters              &lt;br /&gt;Clemens is Mr. ServiceBus and the authority on this part of AppFabric.&lt;/li&gt;            &lt;li&gt;&lt;a href="http://www.techdays.nl/SessieDetails.aspx?cid=1444"&gt;De Locatie Centraal met Windows Phone 7&lt;/a&gt;, Marco Wagemakers              &lt;br /&gt;Lower on the list as Achmea is also using ArcGIS and it should be close to home.&lt;/li&gt;         &lt;/ol&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="127"&gt;15:05 – 16:20&lt;/td&gt;        &lt;td valign="top" width="601"&gt;         &lt;ol&gt;           &lt;li&gt;&lt;a href="http://www.techdays.nl/SessieDetails.aspx?cid=1523"&gt;Produceer Betere Product Kwaliteit door Gebruik te Maken van de Ultimate Test Tools&lt;/a&gt;, Marcel de Vries              &lt;br /&gt;It’s been a long time since I saw Marcel speak. I also need some better overview of the test tooling&lt;/li&gt;            &lt;li&gt;&lt;a href="http://www.techdays.nl/SessieDetails.aspx?cid=1427"&gt;Taking Control of your World with the .NET Micro Framework&lt;/a&gt;, Rob Miles              &lt;br /&gt;Great speaker who could easily have been standup comedian. I’m curious what the .NET Micro Framework will bring us in the future.&lt;/li&gt;         &lt;/ol&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="127"&gt;16:30 – 17:45&lt;/td&gt;        &lt;td valign="top" width="601"&gt;         &lt;ol&gt;           &lt;li&gt;&lt;a href="http://www.techdays.nl/SessieDetails.aspx?cid=1614"&gt;What&amp;#39;s New in Silverlight 5&lt;/a&gt;, Jeff Prosise              &lt;br /&gt;What can I say: Jeff Prosise of Windows and MFC fame to tell us about the new things in SL5. A must see.&lt;/li&gt;            &lt;li&gt;&lt;a href="http://www.techdays.nl/SessieDetails.aspx?cid=1302"&gt;Visual Studio LightSwitch - Beyond the Basics&lt;/a&gt;, Beth Massi              &lt;br /&gt;I saw a LightSwitch session by Stefan Kamphuis at the Dutch CodeCamp a couple of weeks ago. I looks very promising as a new tool and I want to know more about the developer potential of this tool.&lt;/li&gt;         &lt;/ol&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;h2&gt;Developer Days - 2&lt;/h2&gt;  &lt;table border="0" cellspacing="0" cellpadding="2" width="733"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="129"&gt;9:15 – 10:30&lt;/td&gt;        &lt;td valign="top" width="602"&gt;         &lt;ol&gt;           &lt;li&gt;&lt;a href="http://www.techdays.nl/SessieDetails.aspx?cid=1546"&gt;HTML 5 - That&amp;#39;s What You Need to Know Today!&lt;/a&gt;, Ingo Rammer              &lt;br /&gt;Ingo Rammer is famous for his book and knowledge on .NET Remoting. HTML 5 is going to make an impact over the next couple of years. Better not to stay behind.&lt;/li&gt;            &lt;li&gt;&lt;a href="http://www.techdays.nl/SessieDetails.aspx?cid=1323"&gt;Identity &amp;amp; Access Control in the Cloud&lt;/a&gt;, Vittorio Bertocci              &lt;br /&gt;What can I say: the next generation security combined with the cloud. If it weren’t for my involvement in a project that goes deep into claims and identity, I would go see this one.&lt;/li&gt;            &lt;li&gt;&lt;a href="http://www.techdays.nl/SessieDetails.aspx?cid=1562"&gt;Improving Legacy .NET Code&lt;/a&gt;, Thomas Huijer              &lt;br /&gt;Something we all have to deal with: legacy code. I wonder what Thomas’s insights are in improving this.&lt;/li&gt;         &lt;/ol&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="129"&gt;10:50 – 12:05&lt;/td&gt;        &lt;td valign="top" width="602"&gt;         &lt;ol&gt;           &lt;li&gt;&lt;a href="http://www.techdays.nl/SessieDetails.aspx?cid=1423"&gt;Demystifying the .NET Asynchronous Programming Landscape&lt;/a&gt;, Bart de Smet              &lt;br /&gt;Bart has been involved in Linq and other language features at the source in Redmond. This will give a great insight into the async options and the upcoming VB and C# support.&lt;/li&gt;            &lt;li&gt;&lt;a href="http://www.techdays.nl/SessieDetails.aspx?cid=1345"&gt;Real World Architecture with ASP.NET MVC&lt;/a&gt;, Hadi Hariri&lt;/li&gt;            &lt;li&gt;&lt;a href="http://www.techdays.nl/SessieDetails.aspx?cid=1276"&gt;Real World Windows Azure Development: Tips &amp;amp; Tricks&lt;/a&gt;, Wade Wegner              &lt;br /&gt;Hard to choose between number 2 and 3. If it comes down to one of these, I think I’ll toss a coin. (I’ve done so before, ask &lt;a href="http://bloggingabout.net/blogs/dennis" target="_blank"&gt;Dennis&lt;/a&gt;)&lt;/li&gt;         &lt;/ol&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="129"&gt;13:15 – 14:30&lt;/td&gt;        &lt;td valign="top" width="602"&gt;         &lt;ol&gt;           &lt;li&gt;&lt;a href="http://www.techdays.nl/SessieDetails.aspx?cid=1346"&gt;Windows Azure AppFabric Access Control Service: Deep Dive&lt;/a&gt;, Vittorio Bertocci&lt;/li&gt;            &lt;li&gt;&lt;a href="http://www.techdays.nl/SessieDetails.aspx?cid=1343"&gt;Advanced Debugging with Visual Studio 2010&lt;/a&gt;, Ingo Rammer              &lt;br /&gt;Just yesterday I did some low level debugging with WinDbg and DotTrace to track down a memory leak in an ASP.NET application. Ingo will be able to tell more on the topic.&lt;/li&gt;         &lt;/ol&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="129"&gt;14:50 – 16:05&lt;/td&gt;        &lt;td valign="top" width="602"&gt;I’ll be at my own session. Come see this if you are interested in finding out more on Razor and the Web Pages framework surrounding it.&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="129"&gt;16:15 – 17:30&lt;/td&gt;        &lt;td valign="top" width="602"&gt;         &lt;ol&gt;           &lt;li&gt;&lt;a href="http://www.techdays.nl/SessieDetails.aspx?cid=1422"&gt;Developing SaaS Solutions with the Windows Azure Platform&lt;/a&gt;, Vittorio Bertocci&lt;/li&gt;            &lt;li&gt;&lt;a href="http://www.techdays.nl/SessieDetails.aspx?cid=1482"&gt;Web Services Interoperability tussen WCF en Java&lt;/a&gt;, Edwin van Wijk en Bert Erman&lt;/li&gt;            &lt;li&gt;&lt;a href="http://www.techdays.nl/SessieDetails.aspx?cid=1602"&gt;WCF Data Services Introductie - De Serverkant&lt;/a&gt;, Erno de Weerd&lt;/li&gt;         &lt;/ol&gt;          &lt;p&gt;At the end of the conference I have no idea what I think is a nice roundup. These three seemed to come to mind. We’ll see.&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;Hopefully this list or the criteria will help you select from all of the sessions, if you are in doubt. Whichever way, the DevDays 2011 should be a great event. Have fun and see you there!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.alexthissen.nl/aggbug.aspx?PostID=22566" width="1" height="1"&gt;</description></item><item><title>A new role: Microsoft Regional Director</title><link>http://www.alexthissen.nl/blogs/main/archive/2011/04/04/a-new-role-microsoft-regional-director.aspx</link><pubDate>Mon, 04 Apr 2011 20:49:27 GMT</pubDate><guid isPermaLink="false">badf6229-ffeb-484a-8c5a-fc9c9987c8f2:22565</guid><dc:creator>Alex Thissen</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Since early March I have been given a new role as Microsoft Regional Director (RD). In The Netherlands there are two positions for RD, and for the past few years &lt;a href="http://blogs.infosupport.com/blogs/marcelv/" target="_blank"&gt;Marcel de Vries&lt;/a&gt; and &lt;a href="https://blogs.microsoft.nl/members/Anko-Duizer.aspx" target="_blank"&gt;Anko Duizer&lt;/a&gt; have fulfilled both. Last year Anko rejoined the ranks of Microsoft and automatically stopped being an RD. August last year I was contacted by Microsoft NL to talk about the RD program. I happily accepted the invitation to become the new RD.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/main/RegionalDirector_5F00_7A28196A.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;float:right;border-top:0px;border-right:0px;padding-top:0px;" title="RegionalDirector" border="0" alt="RegionalDirector" align="right" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/main/RegionalDirector_5F00_thumb_5F00_62413244.png" width="156" height="57" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I’ve waited for a good moment to announce my new role and finished some other work, in order to be able to spend more time on the RD program. The appearance of the RD column that Marcel and myself wrote for the the last issue of the Dutch &lt;a href="http://www.dotnetmag.nl/" target="_blank"&gt;DotNetMagazine&lt;/a&gt; seemed like a good time. I am very enthusiastic about the program and the part I can play in it. I really believe that RDs can serve as an intermediate between Microsoft and the community at large (being the .NET community, end users and businesses). Very soon Marcel and myself will start building an “attack plan” to maximize the impact we can make as RDs. Stay tuned.&lt;/p&gt;  &lt;p&gt;Next up will be a translation of the RD column in English, because I think that it explains the purpose of the Regional Director program from a different angle. I’ve named it “Regional Directors: the antennas for Microsoft and the community”.&lt;/p&gt;  &lt;p&gt;If you are interested to read more on the Regional Director program, you can take a look at the &lt;a href="http://TheRegion.com" target="_blank"&gt;TheRegion.com&lt;/a&gt;. Also, there is a nice blog post by Jeffrey Pallermo that has some frequently asked questions on “&lt;a href="http://weblogs.asp.net/palermo4/archive/2008/01/04/who-are-the-microsoft-regional-directors.aspx" target="_blank"&gt;who are the Regional Directors&lt;/a&gt;?”. &lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.alexthissen.nl/aggbug.aspx?PostID=22565" width="1" height="1"&gt;</description><category domain="http://www.alexthissen.nl/blogs/main/archive/tags/Regional+Director/default.aspx">Regional Director</category></item><item><title>Dirty Larry Renegade Cop</title><link>http://www.alexthissen.nl/blogs/atarilynx/archive/2010/11/29/dirty-larry-renegade-cop.aspx</link><pubDate>Mon, 29 Nov 2010 14:20:10 GMT</pubDate><guid isPermaLink="false">badf6229-ffeb-484a-8c5a-fc9c9987c8f2:22563</guid><dc:creator>Alex Thissen</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Some time ago I decided to finish some of the Atari Lynx games that I hadn’t played that much or hadn’t completed. This post is on Dirty Larry Renegade Cop, a nice side-scrolling shooter/bash’m up in the tradition of games like Double Dragon (also a Lynx title). In a future post I will explain how I managed to complete the game. &lt;/p&gt;  &lt;p&gt;On a personal note: I pretty much enjoyed the game after some practice, but was glad I could play the game with the Handy emulator to save the game at different points of progress. Especially defeating the first boss (Mr. Snuff) was pretty much impossible without being able to reload the game at level 5. The bullets are your lifeline as much as your health is. No bullets means a certain death. You will (almost) always take damage using your fists. The more difficult villains like the machinegun toting Rastafarian are hard to beat.&lt;/p&gt;  &lt;p&gt;For now, here is some information and nowhere to be found screenshots of the game. Enjoy. &lt;/p&gt;  &lt;h2&gt;Synopsis (spoiler-alert!)&lt;/h2&gt;  &lt;p&gt;You are a police cop with an attitude and a will of his own. You are just gotten yelled at by your boss and learned that you do not get a car anymore.&lt;/p&gt;  &lt;p&gt;Larry’s boss: “&lt;em&gt;And darn it Larry, that’s the third car this week! You need to learn to respect police property! As of this moment, you walk or take the subway! Judge Smite just threw out another case! Get to the Knight Shade Hotel, this time with a proper warrant, and bring in Harold Snuff, A.K.A. Mr. White, an iceman boss. The charge is drug trafficking...&lt;/em&gt;”&lt;/p&gt;  &lt;p&gt;So, off you go to the Knight Shade Hotel on foot. First you travel to the subway, ride a cart on the sub and deal with a lot of criminals and scoundrels along the way. You face gun and knife wielding gang members, big mommas with chains, biker dudes, baseball club swinging crazies (like in the movie The Warriors) and self-igniting pyromaniac&amp;#160; and arrive at the hotel armed with a machine gun you found in the subway. In the meantime someone known as Mr. Big has a conversation with Harold Snuff.&lt;/p&gt;  &lt;p&gt;Mr. Big: “&lt;em&gt;Mr. Snuff, I require a favor of you. There is a cop that I need out of the way.&lt;/em&gt;”     &lt;br /&gt;Mr. Snuff: ”&lt;em&gt;Consider it done, Mr. Big…&lt;/em&gt;”&lt;/p&gt;  &lt;p&gt;You work your way through three levels of the hotel with assorted baddies and end up in a confrontation with Mr. Snuff/White. After you have defeated him you acquire grenades and head back to the office.&lt;/p&gt;  &lt;p&gt;Larry’s boss: “&lt;em&gt;Congratulations, Larry, you finally did something right! Mr. White goes on trial today. We got the address of a warehouse from one of his papers. Check it out and remember, ask questions first!&lt;/em&gt;”&lt;/p&gt;  &lt;p&gt;So, foot patrol to the warehouse along the sidewalks of Steelburg and through the subway. As you leave the subway there is another conversation, this time between Mr. Big and Dr. Electro.&lt;/p&gt;  &lt;p&gt;Mr. Big: “&lt;em&gt;Dr. Electro, it seems that Mr. Snuff was unable to do his duty. Would you mind showing Larry the light?&lt;/em&gt;”     &lt;br /&gt;Dr. Electro starts blinking with electricity.&lt;/p&gt;  &lt;p&gt;You enter a warehouse and get confronted with more villains, including grenade throwing mad scientists. At the far end of the warehouse you discover a trap door and open it to descend into the sewers. Near the end you battle against Dr. Electro. His electrifying rays may hurt you, but he is no match against the awesome power of your grenades and machine gun. You exit the sewers and find you are in… the courthouse of Judge Smite.&lt;/p&gt;  &lt;p&gt;Yet another conversation takes place. Mr. Big has a talk with &lt;/p&gt;  &lt;p&gt;Mr. Big: “&lt;em&gt;Office Stobbe, one of your detectives has been harassing my men. Could you see that it stops?&lt;/em&gt;”     &lt;br /&gt;Office Stobbe: “&lt;em&gt;Yes sir, I’ll get a few of my men to have a talk with him…&lt;/em&gt;”&lt;/p&gt;  &lt;p&gt;Office Stobbe must be a quick guy, because you are faced with a dozen or so corrupt cops that want to have a “talk” with you. They use a lot of bullits to do the talking. Finally, you reach the office room of the courthouse and find that none other than Judge Smite is waiting for you. He starts throwing his wooden hammer at you and hammers the floor to make earthquakes. A big man and hard to defeat. You manage to do so any way. &lt;/p&gt;  &lt;p&gt;As it turns out, Judge Smite is actually Mr. Big! Your actions will put Judge Smite behind bars for a long time. &lt;/p&gt;  &lt;h2&gt;The levels&lt;/h2&gt;  &lt;p&gt;Level 1 and 6, 2 and 7, 4 and 5 are pretty much the same levels. The levels 5, 9 and 10 have Boss battles with Mr. Snuff, Dr. Electro and Judge Smite. After defeating the corrupt judge you have finished the game and end credits are displayed. &lt;/p&gt;  &lt;p&gt;Level 1: The Steelburg Sidewalks &lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap71_5F00_5209B69D.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="snap71" border="0" alt="snap71" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap71_5F00_thumb_5F00_0EDE3870.png" width="240" height="154" /&gt;&lt;/a&gt; &lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap72_5F00_14B8DC09.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="snap72" border="0" alt="snap72" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap72_5F00_thumb_5F00_33231CF2.png" width="240" height="154" /&gt;&lt;/a&gt; &lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap95_5F00_1DC5678A.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="snap95" border="0" alt="snap95" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap95_5F00_thumb_5F00_5C4AB530.png" width="240" height="154" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h3&gt;Level 2: The Steelburg Subway&lt;/h3&gt;  &lt;p&gt;&lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap96_5F00_70D004AE.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="snap96" border="0" alt="snap96" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap96_5F00_thumb_5F00_5A2DB667.png" width="240" height="154" /&gt;&lt;/a&gt;&amp;#160; &lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap98_5F00_79042A45.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="snap98" border="0" alt="snap98" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap98_5F00_thumb_5F00_176E6B2F.png" width="240" height="154" /&gt;&lt;/a&gt; &lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap00_5F00_76E72B7C.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="snap00" border="0" alt="snap00" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap00_5F00_thumb_5F00_2323B261.png" width="240" height="154" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h3&gt;Meanwhile&lt;/h3&gt;  &lt;p&gt;&lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap01_5F00_2DE109B6.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="snap01" border="0" alt="snap01" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap01_5F00_thumb_5F00_47D4C9D8.png" width="240" height="154" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h3&gt;Level 3: The Knight Shade Hotel Ground Floor&lt;/h3&gt;  &lt;p&gt;&lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap02_5F00_51B9BB43.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="snap02" border="0" alt="snap02" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap02_5F00_thumb_5F00_564FC5FD.png" width="240" height="154" /&gt;&lt;/a&gt;&amp;#160;&lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap05_5F00_432E9951.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="snap05" border="0" alt="snap05" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap05_5F00_thumb_5F00_41119A88.png" width="240" height="154" /&gt;&lt;/a&gt;&amp;#160;&lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap04_5F00_5281FB60.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="snap04" border="0" alt="snap04" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap04_5F00_thumb_5F00_6A3932C6.png" width="240" height="154" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h3&gt;Level 4: The Knight Shade Hotel Second Floor&lt;/h3&gt;  &lt;h3&gt;&lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap07_5F00_7EBE8244.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="snap07" border="0" alt="snap07" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap07_5F00_thumb_5F00_5BAE10D4.png" width="240" height="154" /&gt;&lt;/a&gt; &lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap11_5F00_6D1E71AC.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="snap11" border="0" alt="snap11" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap11_5F00_thumb_5F00_3F50A8E7.png" width="240" height="154" /&gt;&lt;/a&gt;&amp;#160;&lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap09_5F00_70DC167C.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="snap09" border="0" alt="snap09" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap09_5F00_thumb_5F00_4DCBA50C.png" width="240" height="154" /&gt;&lt;/a&gt; &lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap94_5F00_7B4CC4CF.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="snap94" border="0" alt="snap94" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap94_5F00_thumb_5F00_1303FC36.png" width="240" height="154" /&gt;&lt;/a&gt;&lt;/h3&gt;  &lt;h3&gt;Level 5: The Knight Shade Hotel 3rd Floor&lt;/h3&gt;  &lt;p&gt;&lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap08_5F00_1297C941.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="snap08" border="0" alt="snap08" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap08_5F00_thumb_5F00_49257485.png" width="240" height="154" /&gt;&lt;/a&gt;&amp;#160;&lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap18_5F00_419A0518.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="snap18" border="0" alt="snap18" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap18_5F00_thumb_5F00_3F10D35A.png" width="240" height="154" /&gt;&lt;/a&gt; &lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap19_5F00_1360095E.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="snap19" border="0" alt="snap19" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap19_5F00_thumb_5F00_1C0061EA.png" width="240" height="154" /&gt;&lt;/a&gt; &lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap21_5F00_42624535.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="snap21" border="0" alt="snap21" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap21_5F00_thumb_5F00_38B9D6FF.png" width="240" height="154" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h3&gt;Back at the office&lt;/h3&gt;  &lt;p&gt;&lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap22_5F00_1F51D3C5.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="snap22" border="0" alt="snap22" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap22_5F00_thumb_5F00_35583F57.png" width="240" height="154" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h3&gt;Level 6: The Steelburg Sidewalks&lt;/h3&gt;  &lt;p&gt;&lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap23_5F00_29C28218.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="snap23" border="0" alt="snap23" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap23_5F00_thumb_5F00_40A15394.png" width="240" height="154" /&gt;&lt;/a&gt; &lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap25_5F00_6AA151BC.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="snap25" border="0" alt="snap25" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap25_5F00_thumb_5F00_44CB2B59.png" width="240" height="154" /&gt;&lt;/a&gt; &lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap27_5F00_0F526934.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="snap27" border="0" alt="snap27" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap27_5F00_thumb_5F00_1B73E35B.png" width="240" height="154" /&gt;&lt;/a&gt; &lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap28_5F00_4CFF50F0.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="snap28" border="0" alt="snap28" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap28_5F00_thumb_5F00_67CB76FC.png" width="240" height="154" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h3&gt;Level 7: The Steelburg Subway 2&lt;/h3&gt;  &lt;p&gt;&lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap29_5F00_0B849E97.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="snap29" border="0" alt="snap29" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap29_5F00_thumb_5F00_05C984F1.png" width="240" height="154" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h3&gt;Meanwhile&lt;/h3&gt;  &lt;p&gt;&lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap30_5F00_2982AC8B.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="snap30" border="0" alt="snap30" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap30_5F00_thumb_5F00_03405333.png" width="240" height="154" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h3&gt;Level 8: The Warehouse&lt;/h3&gt;  &lt;p&gt;&lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap31_5F00_66572E5D.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="snap31" border="0" alt="snap31" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap31_5F00_thumb_5F00_42DA89F8.png" width="240" height="154" /&gt;&lt;/a&gt; &lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap33_5F00_02383D89.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="snap33" border="0" alt="snap33" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap33_5F00_thumb_5F00_3F0CBF5B.png" width="240" height="154" /&gt;&lt;/a&gt; &lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap36_5F00_5A45185C.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="snap36" border="0" alt="snap36" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap36_5F00_thumb_5F00_106690AC.png" width="240" height="154" /&gt;&lt;/a&gt; &lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap38_5F00_3AD2C1C9.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="snap38" border="0" alt="snap38" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap38_5F00_thumb_5F00_47606EE5.png" width="240" height="154" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h3&gt;Level 9: The Sewers&lt;/h3&gt;  &lt;p&gt;&lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap39_5F00_545A4EF6.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="snap39" border="0" alt="snap39" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap39_5F00_thumb_5F00_4BF6799F.png" width="240" height="154" /&gt;&lt;/a&gt; &lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap41_5F00_3698C437.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="snap41" border="0" alt="snap41" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap41_5F00_thumb_5F00_29523B24.png" width="240" height="154" /&gt;&lt;/a&gt;&amp;#160;&lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap40_5F00_28E6082F.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="snap40" border="0" alt="snap40" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap40_5F00_thumb_5F00_2E5478D3.png" width="240" height="154" /&gt;&lt;/a&gt;&amp;#160; &lt;/p&gt;  &lt;h3&gt;Level 9: Boss battle with Dr. Electro&lt;/h3&gt;  &lt;p&gt;&amp;#160;&lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap46_5F00_78DBB6AD.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="snap46" border="0" alt="snap46" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap46_5F00_thumb_5F00_0C88A042.png" width="240" height="154" /&gt;&lt;/a&gt; &lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap47_5F00_3041C7DC.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="snap47" border="0" alt="snap47" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap47_5F00_thumb_5F00_55CB453D.png" width="240" height="154" /&gt;&lt;/a&gt; &lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap44_5F00_555F1248.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="snap44" border="0" alt="snap44" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap44_5F00_thumb_5F00_73C95331.png" width="240" height="154" /&gt;&lt;/a&gt;&lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap50_5F00_0C58F082.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="snap50" border="0" alt="snap50" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap50_5F00_thumb_5F00_396DDD50.png" width="240" height="154" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h3&gt;Meanwhile&lt;/h3&gt;  &lt;p&gt;&lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap51_5F00_2B2F6460.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="snap51" border="0" alt="snap51" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap51_5F00_thumb_5F00_04ED0B08.png" width="240" height="154" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h3&gt;Level 10: The courthouse&lt;/h3&gt;  &lt;p&gt;&lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap52_5F00_4F7448E2.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="snap52" border="0" alt="snap52" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap52_5F00_thumb_5F00_3B0E8357.png" width="240" height="154" /&gt;&lt;/a&gt; &lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap54_5F00_6C99F0EC.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="snap54" border="0" alt="snap54" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap54_5F00_thumb_5F00_6AE92518.png" width="240" height="154" /&gt;&lt;/a&gt; &lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap55_5F00_1791DEF2.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="snap55" border="0" alt="snap55" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap55_5F00_thumb_5F00_35FC1FDB.png" width="240" height="154" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;h3&gt;Level 10: Boss battle with Judge Smite&lt;/h3&gt;  &lt;p&gt;&lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap56_5F00_7C790FE3.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="snap56" border="0" alt="snap56" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap56_5F00_thumb_5F00_2CBFE49A.png" width="240" height="154" /&gt;&lt;/a&gt; &lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap59_5F00_212A275B.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="snap59" border="0" alt="snap59" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap59_5F00_thumb_5F00_22AB436F.png" width="240" height="154" /&gt;&lt;/a&gt; &lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap60_5F00_502C6332.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="snap60" border="0" alt="snap60" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap60_5F00_thumb_5F00_3D0B3686.png" width="240" height="154" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h3&gt;End credits&lt;/h3&gt;  &lt;p&gt;&lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap61_5F00_60C45E20.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="snap61" border="0" alt="snap61" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap61_5F00_thumb_5F00_732CAED5.png" width="240" height="154" /&gt;&lt;/a&gt; &lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap64_5F00_1D98DFF3.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="snap64" border="0" alt="snap64" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap64_5F00_thumb_5F00_496933E2.png" width="240" height="154" /&gt;&lt;/a&gt; &lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap69_5F00_300130A8.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="snap69" border="0" alt="snap69" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap69_5F00_thumb_5F00_4E6B7191.png" width="240" height="154" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Regular villains (in order of appearance)&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/image_5F00_35036E57.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="image" border="0" alt="image" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/image_5F00_thumb_5F00_7FF6DF26.png" width="141" height="197" /&gt;&lt;/a&gt;&amp;#160;&lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/image_5F00_3F5492B7.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="image" border="0" alt="image" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/image_5F00_thumb_5F00_53D9E235.png" width="146" height="213" /&gt;&lt;/a&gt;&amp;#160;&lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/image_5F00_4CBAA5BD.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="image" border="0" alt="image" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/image_5F00_thumb_5F00_779309CF.png" width="293" height="184" /&gt;&lt;/a&gt; &lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/image_5F00_1E612010.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="image" border="0" alt="image" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/image_5F00_thumb_5F00_1741E398.png" width="101" height="218" /&gt;&lt;/a&gt; &lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/image_5F00_53017C4B.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="image" border="0" alt="image" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/image_5F00_thumb_5F00_36F0BD60.png" width="199" height="221" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/image_5F00_5DBED3A0.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="image" border="0" alt="image" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/image_5F00_thumb_5F00_4B760CDE.png" width="172" height="290" /&gt;&lt;/a&gt;&amp;#160;&lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/image_5F00_52291661.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="image" border="0" alt="image" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/image_5F00_thumb_5F00_6405AA2E.png" width="111" height="219" /&gt;&lt;/a&gt; &lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/image_5F00_75E23DFB.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="image" border="0" alt="image" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/image_5F00_thumb_5F00_63997739.png" width="156" height="211" /&gt;&lt;/a&gt;&amp;#160;&lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/image_5F00_0A678D7A.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="image" border="0" alt="image" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/image_5F00_thumb_5F00_3135A3BA.png" width="217" height="234" /&gt;&lt;/a&gt;&amp;#160;&lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/image_5F00_305D3DD0.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="image" border="0" alt="image" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/image_5F00_thumb_5F00_221EC4E0.png" width="166" height="248" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.alexthissen.nl/aggbug.aspx?PostID=22563" width="1" height="1"&gt;</description></item><item><title>Vacature “Microsoft Technisch consultant” bij Nokavision</title><link>http://www.alexthissen.nl/blogs/main/archive/2010/11/29/vacature-microsoft-technisch-consultant-bij-nokavision.aspx</link><pubDate>Mon, 29 Nov 2010 13:55:26 GMT</pubDate><guid isPermaLink="false">badf6229-ffeb-484a-8c5a-fc9c9987c8f2:22562</guid><dc:creator>Alex Thissen</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Het bedrijf &lt;a href="http://www.nokavision.com/" target="_blank"&gt;Nokavision&lt;/a&gt; uit ‘s-Hertogenbosch heeft een interessante vacature beschikbaar. Ben je op zoek naar een nieuwe uitdaging in het zuidelijke deel van Nederland, lees dan de beschrijving eens door. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/main/cid_5F00_image001_5F00_gif01CB7CF2_5F00_762F6F27.gif"&gt;&lt;img style="background-image:none;border-right-width:0px;margin:0px 10px 0px 0px;padding-left:0px;padding-right:0px;display:inline;float:left;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="!cid_image001_gif@01CB7CF2" border="0" alt="!cid_image001_gif@01CB7CF2" align="left" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/main/cid_5F00_image001_5F00_gif01CB7CF2_5F00_thumb_5F00_2D294D61.gif" width="219" height="50" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Ik ken Nokavision als een bedrijf dat graag bezig is met nieuwe Microsoft technologien. Ze hebben een sterk verleden met document management en document stromen en business process management in organisaties. Om meer te weten te komen over Nokavision, kun je natuurlijk &lt;a href="http://www.nokavision.com/" target="_blank"&gt;hun website&lt;/a&gt; bezoeken. Daar vind je onder andere &lt;a href="http://www.nokavision.com/case_studies.htm" target="_blank"&gt;case studies&lt;/a&gt; van eerdere klanten, hun producten (o.a. Skelta, StreamServe en Captaris producten) en de diensten die ze bieden.&lt;/p&gt;  &lt;p&gt;Hieronder de vacaturetekst. Ben je geinteresseerd, neem dan contact op met Rob Steenvoorden. De contactgegevens staan onderaan.&lt;/p&gt;  &lt;h2&gt;Microsoft Technisch consultant&lt;/h2&gt;  &lt;h3&gt;Doel van functie&lt;/h3&gt;  &lt;p&gt;Als Consultant maak je deel uit van een professioneel team dat als standplaats Den Bosch heeft. Onze werkzaamheden vinden plaats aan oplossingen die als product in de markt worden gezet. Je werkt aan de ontwikkeling, uitbreiding en beheer van Microsoft oplossingen. Je werkt met professionele collega’s met diverse ideeën, achtergronden en werkwijzen. Je wordt aangemoedigd je technische vaardigheden uit te breiden en je thuis te voelen in een “lerende” cultuur. &lt;/p&gt;  &lt;h3&gt;Verantwoordelijkheden en taken&lt;/h3&gt;  &lt;p&gt;Je bent verantwoordelijk voor de ontwikkeling, oplevering en onderhoud van nieuwe en bestaande&amp;#160; producten op basis van Microsoft technologieën. Je werkt met de modernste Microsoft technologieën waaronder C#, .NET 4, Silverlight 4, WCF RIA Services, Entity Framework, Enterprise Library, SQL Server. Tevens maken we gebruik van Workflow technologie die .NET gerelateerd is. &lt;/p&gt;  &lt;h3&gt;Ideale profiel&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;Ervaring met C# en .NET &lt;/li&gt;    &lt;li&gt;Junior/Medior software ontwikkelaar &lt;/li&gt;    &lt;li&gt;Je bent accuraat en hebt een actieve houding &lt;/li&gt;    &lt;li&gt;Belangstelling voor complexe bedrijfskundige en technische omgevingen &lt;/li&gt;    &lt;li&gt;Gewend om volgens methodieken te werken &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Een pré is:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Kennis van UML &amp;amp; Design Patterns &lt;/li&gt;    &lt;li&gt;Kennis van en ervaring met Silverlight en/of WPF &lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Arbeidsvoorwaarden&lt;/h3&gt;  &lt;p&gt;Nokavision is een zeer sociaal bedrijf. Nokavision biedt uitstekende primaire/secundaire arbeidsvoorwaarden. De opleidingsmogelijkheden zowel intern als extern zijn uitstekend. Daarnaast besteden wij veel tijd en energie aan persoonlijke groei en ontwikkeling.&lt;/p&gt;  &lt;p&gt;Wil je meer weten of reageren: stuur je bericht met CV naar &lt;a href="mailto:r.steenvoorden@nokavision.com"&gt;r.steenvoorden@nokavision.com&lt;/a&gt; of bel met 073-6408490.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.alexthissen.nl/aggbug.aspx?PostID=22562" width="1" height="1"&gt;</description></item><item><title>Two exam opportunities</title><link>http://www.alexthissen.nl/blogs/main/archive/2010/10/16/two-exam-opportunities.aspx</link><pubDate>Sat, 16 Oct 2010 20:46:48 GMT</pubDate><guid isPermaLink="false">badf6229-ffeb-484a-8c5a-fc9c9987c8f2:22558</guid><dc:creator>Alex Thissen</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;Quick post on two beta Microsoft exams that you are allowed to participate in. &lt;a href="http://blogs.msdn.com/b/gerryo/" target="_blank"&gt;Gerry o’Brien&lt;/a&gt; posted that the exams:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://blogs.msdn.com/b/gerryo/archive/2010/10/13/windows-azure-beta-exam-announcement.aspx" target="_blank"&gt;71-583, Pro: Designing and Developing Windows Azure Applications&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/b/gerryo/archive/2010/10/13/silverlight-beta-exam-announcement.aspx" target="_blank"&gt;71-506, TS: Silverlight 4, Development&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;are now available to take. The beauty is that if you manage to pass the qualifying score on the beta exam, you also pass the exam as soon as it is released. Of course, it is also a good challenge for your brain and a test of your knowledge on the topic of the exam. When you’re into the business of training, coaching or other knowledge transfer areas, this is a great opportunity to find out which training, books and e-learning material is needed to prepare for this exam.&lt;/p&gt;  &lt;p&gt;The Microsoft Learning website lists extra information on the exams &lt;a href="http://www.microsoft.com/learning/en/us/exam.aspx?ID=70-583&amp;amp;locale=en-us" target="_blank"&gt;70-583&lt;/a&gt; and &lt;a href="http://www.microsoft.com/learning/en/us/exam.aspx?ID=70-506&amp;amp;locale=en-us" target="_blank"&gt;70-506&lt;/a&gt;. The exams seem to be the one exam to pass to acquire either the “MCPD: Windows Azure Developer 4” or “MCTS: Silverlight 4, Development” certifications.&lt;/p&gt;  &lt;p&gt;You can take these exams for free if you use the promotion codes AZPRO and SL410 respectively. You need to enter these code at the Payment Information screen.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/main/image_5F00_4DF72B5B.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="image" border="0" alt="image" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/main/image_5F00_thumb_5F00_576FE9D1.png" width="552" height="253" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Time is limited, so be sure to register immediately at &lt;a href="http://www.prometric.com/default.htm" target="_blank"&gt;Prometric&lt;/a&gt;.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.alexthissen.nl/aggbug.aspx?PostID=22558" width="1" height="1"&gt;</description></item><item><title>Arcade machines converted to Atari Lynx</title><link>http://www.alexthissen.nl/blogs/atarilynx/archive/2010/09/22/arcade-machines-converted-to-atari-lynx.aspx</link><pubDate>Wed, 22 Sep 2010 10:51:15 GMT</pubDate><guid isPermaLink="false">badf6229-ffeb-484a-8c5a-fc9c9987c8f2:22556</guid><dc:creator>Alex Thissen</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;The &lt;a href="http://www.ataritimes.com/" target="_blank"&gt;Atari Times&lt;/a&gt; has a really nice article “&lt;a href="http://www.ataritimes.com/article.php?showarticle=567" target="_blank"&gt;Arcade to Lynx&lt;/a&gt;”. It shows a graphical list of games that once lived as a standalone arcade machine and got converted to a game for the Atari Lynx. I had no idea there were that many arcade games. It is not surprising to see Atari’s own games, such as Xybots and Gauntlet, in the list. These Arcade games were new to me:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;A.P.B.&lt;/li&gt;    &lt;li&gt;Blockout&lt;/li&gt;    &lt;li&gt;Hydra&lt;/li&gt;    &lt;li&gt;Pac-Land&lt;/li&gt;    &lt;li&gt;Road Riot&lt;/li&gt;    &lt;li&gt;Tournament Cyberball&lt;/li&gt;    &lt;li&gt;Xenophobe&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;At least, I had not seen them in the arcade halls (when those were still around).&lt;/p&gt;  &lt;p&gt;Here’s is a sample from the site: Ms. Pac-man&lt;/p&gt;  &lt;p&gt;&lt;img border="0" src="http://www.ataritimes.com/images/arcade/mspacman.gif" alt="" /&gt;&amp;#160; &lt;br /&gt;&lt;em&gt;Original Ms. Pac-man arcade machine&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap72_5F00_5F9E1734.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="snap72" border="0" alt="snap72" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap72_5F00_thumb_5F00_0FD4C61E.png" width="240" height="154" /&gt;&lt;/a&gt; &lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap73_5F00_2817BA6C.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="snap73" border="0" alt="snap73" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap73_5F00_thumb_5F00_1900DB92.png" width="240" height="154" /&gt;&lt;/a&gt;     &lt;br /&gt;&lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap74_5F00_780D68EA.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="snap74" border="0" alt="snap74" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap74_5F00_thumb_5F00_5EA565B0.png" width="240" height="154" /&gt;&lt;/a&gt; &lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap76_5F00_252255B9.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="snap76" border="0" alt="snap76" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap76_5F00_thumb_5F00_56ADC34E.png" width="240" height="154" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;em&gt;Atari Lynx conversion of Ms. Pac-man&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;The beauty of most conversion to the Lynx is the addition of extras. Take Ms. Pac-man again as an example. Besides the original gameplay including the intermissions between different level types, there are also new levels that are larger and landscape oriented instead of the normal portrait ones. Moreover, every round has a new level layout. I found at least 17 unique layouts.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap77_5F00_2E9B142F.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="snap77" border="0" alt="snap77" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap77_5F00_thumb_5F00_62CF3D75.png" width="240" height="154" /&gt;&lt;/a&gt; &lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap78_5F00_13EE7816.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="snap78" border="0" alt="snap78" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap78_5F00_thumb_5F00_5A6B681E.png" width="240" height="154" /&gt;&lt;/a&gt; &lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap87_5F00_44354CCC.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="snap87" border="0" alt="snap87" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap87_5F00_thumb_5F00_78697612.png" width="240" height="154" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;em&gt;New levels in Lynx version of Ms. Pac-Man&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Also, there are cheats and easter eggs all over the place. In the case of Ms. Pac-Man you can get extra lives and lightning speed, plus you can skip levels. Obviously not available in the arcade machine.&lt;/p&gt;  &lt;p&gt;For your convenience, here are the actions required to activate the cheats.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;5 Extra lives:      &lt;br /&gt;PAUSE, OPTION 1, B, B, A, A, OPTION 1&lt;/li&gt;    &lt;li&gt;Lightning speed:      &lt;br /&gt;PAUSE, OPTION 1, A, and OPTION 1. A lightning bolt will appear. Press B to use it.&lt;/li&gt;    &lt;li&gt;Skip levels:     &lt;br /&gt;PAUSE, OPTION 1, B, B, B, OPTION 1, PAUSE and skip levels with OPTION 1&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;TIP: When pausing on the Handy emulator, make sure you use Q to pause instead of F5. “Pause” should appear on-screen.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.alexthissen.nl/aggbug.aspx?PostID=22556" width="1" height="1"&gt;</description></item><item><title>Architecture of the Atari Lynx</title><link>http://www.alexthissen.nl/blogs/atarilynx/archive/2010/09/20/architecture-of-the-atari-lynx.aspx</link><pubDate>Sun, 19 Sep 2010 22:26:00 GMT</pubDate><guid isPermaLink="false">badf6229-ffeb-484a-8c5a-fc9c9987c8f2:22555</guid><dc:creator>Alex Thissen</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;The Atari Lynx is a handheld console that has two form factors over its lifetime. The Lynx I and II models have a different casing and internal layout, but hold nearly exact same electronic hardware. The main difference is lower power consumption and stereo sound (but less loud) for the Lynx II incarnation.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/258_5F00_61175232.jpg"&gt;&lt;img height="133" width="271" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/258_5F00_thumb_5F00_694B77C9.jpg" alt="Atari Lynx I" border="0" title="Atari Lynx I" style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" /&gt;&lt;/a&gt; &lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/Atari_5F00_Lynx_5F00_II_5F00_5702B107.png"&gt;&lt;img height="103" width="220" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/Atari_5F00_Lynx_5F00_II_5F00_thumb_5F00_144365CF.png" alt="Atari Lynx II" border="0" title="Atari Lynx II" style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;em&gt;Atari Lynx I and II handhelds&lt;/em&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;This fragment found at Atari &lt;a href="mailto:Lynx@Everything.com"&gt;Lynx@Everything.com&lt;/a&gt; describes the Lynx fairly well:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;The Lynx had two &lt;/em&gt;&lt;em&gt;16-bit&lt;/em&gt;&lt;em&gt; &lt;/em&gt;&lt;em&gt;co-processors&lt;/em&gt;&lt;em&gt; running at 16 &lt;/em&gt;&lt;em&gt;MHz&lt;/em&gt;&lt;em&gt; each, nicknamed &lt;/em&gt;&lt;em&gt;Mikey&lt;/em&gt;&lt;em&gt; and &lt;/em&gt;&lt;em&gt;Suzy&lt;/em&gt;&lt;em&gt;. Mikey supported the sound engine and the video driver, the system &lt;/em&gt;&lt;em&gt;interrupt&lt;/em&gt;&lt;em&gt;s routine, ComLynx support, and the system &lt;/em&gt;&lt;em&gt;timer&lt;/em&gt;&lt;em&gt;s. Mikey was also responsible for loading the games with the 512 bytes of &lt;/em&gt;&lt;em&gt;ROM&lt;/em&gt;&lt;em&gt; it had for that function. Suzy supported the &lt;/em&gt;&lt;em&gt;graphics&lt;/em&gt;&lt;em&gt; engine and a &lt;/em&gt;&lt;em&gt;math&lt;/em&gt;&lt;em&gt; co-processor. The Lynx contains half a &lt;/em&gt;&lt;em&gt;megabit&lt;/em&gt;&lt;em&gt; of ROM. Game cards support up to 2 &lt;/em&gt;&lt;em&gt;MB&lt;/em&gt;&lt;em&gt; of ROM, but most contain either 128K or 256K, with only 3 games supporting 512K.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;The various chips inside the machine are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;U1: (Mikey, see below)&lt;/li&gt;
&lt;li&gt;U2: (Suzy, see below)&lt;/li&gt;
&lt;li&gt;U3 and U4: &lt;br /&gt;Lynx I &amp;ndash; HM-50464-12 &lt;br /&gt;Lynx II - HY53C464LS-10 (Two 256 KB DRAM chips (64K X 4 nMOS general purpose Dynamic RAM, page-mode operation DIP-18, 256 cycles/4 msec)&lt;/li&gt;
&lt;li&gt;U5: LM386 (Low voltage audio power amplifier)&lt;/li&gt;
&lt;li&gt;U6: 4069 (CMOS 16 MHz Square wave oscillator)&lt;/li&gt;
&lt;li&gt;U7: 74HC04 (Hex inverter, used multiple times)&lt;/li&gt;
&lt;li&gt;U8: 74HC4040 (12-stage binary ripple counter; generates cartridge addresses A0-A10)&lt;/li&gt;
&lt;li&gt;U9: 74HC164 (8-bit serial-in, parallel-out shift register; generates cartridge addresses A12-A19)&lt;/li&gt;
&lt;li&gt;U10: Unknown&lt;/li&gt;
&lt;li&gt;U11: 74HC74 (High Speed CMOS Logic Dual Positive-Edge-Triggered D-Type Flip-Flops with Set and Reset)&lt;/li&gt;
&lt;li&gt;U12: LM386 (Low voltage audio power amplifier)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Mikey&lt;/strong&gt; &lt;br /&gt;16-bit custom CMOS chip running at 16MHz&lt;/p&gt;
&lt;table width="733" cellpadding="2" cellspacing="0" border="0"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td width="200" valign="top"&gt;MOS 65SC02&lt;/td&gt;
&lt;td width="531" valign="top"&gt;Processor running at up to 4MHz (~3.6MHz average) 8-bit CPU, 16-bit address space&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="200" valign="top"&gt;Sound engine&lt;/td&gt;
&lt;td width="531" valign="top"&gt;4 channel sound 8-bit DAC for each channel (4 channels x 8-bits/channel = 32 bits commonly quoted) &lt;br /&gt;Lynx II has panning support &lt;br /&gt;Atari reports the range is &amp;quot;100Hz to above the range of human hearing&amp;quot;; spectrum analysis shows the range may go as low as 32Hz. &lt;br /&gt;Stereo with panning (mono for original Lynx)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="200" valign="top"&gt;Video DMA driver&lt;/td&gt;
&lt;td width="531" valign="top"&gt;Video DMA driver for LCD display &lt;br /&gt;4096 color (12-bit) palette &lt;br /&gt;16 simultaneous colors (4 bits) from palette per scanline (more than 16 colors can be displayed by changing palettes after each scanline)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="200" valign="top"&gt;System timers&lt;/td&gt;
&lt;td width="531" valign="top"&gt;8 System timers (2 reserved for LCD timing, one for UART)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="200" valign="top"&gt;Interrupt controller&lt;/td&gt;
&lt;td width="531" valign="top"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="200" valign="top"&gt;UART (for ComLynx)&lt;/td&gt;
&lt;td width="531" valign="top"&gt;Universal Asynchronous Receive/Transmit &lt;br /&gt;Fixed framing format 8E1 (meaning an 8-way connection between two &amp;ldquo;users&amp;rdquo;) &lt;br /&gt;Baud rate up to 62500Bd&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="200" valign="top"&gt;512 bytes ROM&lt;/td&gt;
&lt;td width="531" valign="top"&gt;Bootstrap and game-card loading ROM&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Suzy &lt;br /&gt;&lt;/strong&gt;16-bit custom CMOS chip running at 16MHz&lt;/p&gt;
&lt;table width="734" cellpadding="2" cellspacing="0" border="0"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td width="200" valign="top"&gt;Blitter unit&lt;/td&gt;
&lt;td width="532" valign="top"&gt;Bit-map block transfer unit&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="200" valign="top"&gt;Graphics engine&lt;/td&gt;
&lt;td width="532" valign="top"&gt;Hardware drawing support &lt;br /&gt;Unlimited number of high-speed sprites with collision detection &lt;br /&gt;Hardware high-speed sprite scaling, distortion, and tilting effects &lt;br /&gt;Hardware decoding of compressed sprite data &lt;br /&gt;Hardware clipping and multi-directional scrolling &lt;br /&gt;Variable frame rate (up to 75 frames/second) &lt;br /&gt;160 x 102 &amp;quot;triad&amp;quot; standard resolution (16,320 addressable pixels) (A triad is three LCD elements: red, green, and blue) &lt;br /&gt;Capability of 480 x 102 artificially high resolution&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="200" valign="top"&gt;Math co-processor&lt;/td&gt;
&lt;td width="532" valign="top"&gt;Hardware 16-bit multiply and divide &lt;br /&gt;16-bit &amp;times; 16-bit &amp;rarr; 32-bit multiply with optional accumulation; &lt;br /&gt;32-bit &amp;divide; 16-bit &amp;rarr; 16-bit divide &lt;br /&gt;Parallel processing of CPU and single multiply or divide instruction&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="200" valign="top"&gt;Controller Input &lt;/td&gt;
&lt;td width="532" valign="top"&gt;Handles input from joypad, pause, option and fire buttons&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Parts of the Mikey and Suzy information was taken from the &lt;a target="_blank" href="http://www.faqs.org/faqs/games/video-games/atari/lynx/"&gt;Atari Lynx FAQ&lt;/a&gt;, which has more detailed information on all physical aspects of the Atari Lynx.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="http://www.monlynx.de/lynx/misc.html"&gt;Bastian Schick&lt;/a&gt; has the &lt;a target="_blank" href="http://www.monlynx.de/download/lynx/schematics.zip"&gt;electronic schematics&lt;/a&gt; up on his website (in a single ZIP file, but with two images of board split in left and right side). He also has a file listing the &lt;a target="_blank" href="http://www.monlynx.de/lynx/pinout.txt"&gt;pin layout of the cartridge port&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/lynx_5F00_ii_5F00_21A978D5.jpg"&gt;&lt;img height="271" width="640" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/lynx_5F00_ii_5F00_thumb_5F00_129299FB.jpg" alt="lynx_ii" border="0" title="lynx_ii" style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Another famous Lynx developer &lt;a target="_blank" href="http://www.mdgames.de"&gt;Matthias Domin&lt;/a&gt; has the &lt;a target="_blank" href="http://www.mdgames.de/lynx_i_description.htm"&gt;Lynx I&lt;/a&gt; and &lt;a target="_blank" href="http://www.mdgames.de/lynx_ii_description.htm"&gt;Lynx II&lt;/a&gt; opened up and describes what part is what.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://www.mdgames.de/l2_opened.jpg" alt="Opened Lynx II (turned around)" border="0" /&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.alexthissen.nl/aggbug.aspx?PostID=22555" width="1" height="1"&gt;</description></item><item><title>Game endings at Video Game Museum</title><link>http://www.alexthissen.nl/blogs/atarilynx/archive/2010/09/19/game-endings-at-video-game-museum.aspx</link><pubDate>Sun, 19 Sep 2010 18:35:45 GMT</pubDate><guid isPermaLink="false">badf6229-ffeb-484a-8c5a-fc9c9987c8f2:22554</guid><dc:creator>Alex Thissen</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Some games are just too hard to finish, or take too much time to do so. And if you did, on a device like the Atari Lynx, it is hard to show others what the end scenes and screens of the game look like. The quality of photographs usually don’t show this very well. Thanks to the emulators it is possible to both save games (by storing the entire state of the emulator) and create high quality images of the screens. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/shabe1_5F00_74F3CF11.gif"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="shabe-1" border="0" alt="shabe-1" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/shabe1_5F00_thumb_5F00_29942B4D.gif" width="160" height="102" /&gt;&lt;/a&gt;&amp;#160;&lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/shabe2_5F00_0D836C62.gif"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="shabe-2" border="0" alt="shabe-2" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/shabe2_5F00_thumb_5F00_49430515.gif" width="160" height="102" /&gt;&lt;/a&gt;    &lt;br /&gt;&lt;em&gt;Ending for Shadow of the Beast&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Apparently over at &lt;a href="http://www.vgmuseum.com/" target="_blank"&gt;The Video Game Museum&lt;/a&gt; they have been collecting game endings for a number of games. One of the collections is the &lt;a href="http://www.vgmuseum.com/end/lynx/" target="_blank"&gt;Atari Lynx game endings&lt;/a&gt;. I must say that there is an impressive number of games listed with screenshots showing the last sequences of the game. There are even some games I have never finished, but was curious to see what it would be like. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/kung0_5F00_2D32462A.gif"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="kung-0" border="0" alt="kung-0" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/kung0_5F00_thumb_5F00_6CFC2CAF.gif" width="160" height="102" /&gt;&lt;/a&gt; &lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/kung2_5F00_13CA42F0.gif"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="kung-2" border="0" alt="kung-2" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/kung2_5F00_thumb_5F00_219C88EB.gif" width="160" height="102" /&gt;&lt;/a&gt; &lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/kung4_5F00_6C8FF9BA.gif"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="kung-4" border="0" alt="kung-4" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/kung4_5F00_thumb_5F00_135E0FFB.gif" width="160" height="102" /&gt;&lt;/a&gt;     &lt;br /&gt;&lt;em&gt;Ending for Kung Food&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Go &lt;a href="http://www.vgmuseum.com/end/lynx/" target="_blank"&gt;check it out&lt;/a&gt; yourself. Now all I need to find is a website that has the savegames for a decent emulator (like Handy), so I can relive those endings myself. If it is not out there, I guess that I will need to create one myself. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/vik3_5F00_0C3ED383.gif"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="vik-3" border="0" alt="vik-3" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/vik3_5F00_thumb_5F00_47FE6C36.gif" width="160" height="102" /&gt;&lt;/a&gt;&amp;#160;&lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/vik4_5F00_12F1DD06.gif"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="vik-4" border="0" alt="vik-4" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/vik4_5F00_thumb_5F00_0BD2A08E.gif" width="160" height="102" /&gt;&lt;/a&gt;    &lt;br /&gt;&lt;em&gt;Ending for Viking Child &lt;/em&gt;(which I did finish myself)&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.alexthissen.nl/aggbug.aspx?PostID=22554" width="1" height="1"&gt;</description></item><item><title>Google Android versus Atari Lynx’s Gauntlet the Third Encounter</title><link>http://www.alexthissen.nl/blogs/atarilynx/archive/2010/09/19/google-android-versus-atari-lynx-s-gauntlet-the-third-encounter.aspx</link><pubDate>Sun, 19 Sep 2010 16:25:01 GMT</pubDate><guid isPermaLink="false">badf6229-ffeb-484a-8c5a-fc9c9987c8f2:22553</guid><dc:creator>Alex Thissen</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Personally, I haven’t played Gauntlet III on the Lynx much. Consequently I hadn’t noticed the similarities between the Android character and the new logo of Google’s mobile operating system.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://bugbig.com/shocker-googles-android-logo-boosted-from-atari-lynx-title-gauntlet-the-third-encounter"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="androidcopyeng[1]" border="0" alt="androidcopyeng[1]" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/androidcopyeng1_5F00_610FAD0F.jpg" width="365" height="256" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;To wet your Lynx appetite some more, here are some additional screenshots:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap05_5F00_3A9CB821.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;margin:0px 5px 0px 0px;display:inline;border-top:0px;border-right:0px;" title="snap05" border="0" alt="snap05" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap05_5F00_thumb_5F00_2C5E3F31.png" width="154" height="240" /&gt;&lt;/a&gt;&amp;#160; &lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap71_5F00_4DEE8063.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;margin:0px 5px 0px 0px;display:inline;border-top:0px;border-right:0px;" title="snap71" border="0" alt="snap71" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap71_5F00_thumb_5F00_0DB866E9.png" width="154" height="240" /&gt;&lt;/a&gt; &lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap69_5F00_13FF3D77.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;margin:0px 5px 0px 0px;display:inline;border-top:0px;border-right:0px;" title="snap69" border="0" alt="snap69" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap69_5F00_thumb_5F00_25DBD144.png" width="154" height="240" /&gt;&lt;/a&gt; &lt;a href="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap70_5F00_256F9E4F.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="snap70" border="0" alt="snap70" src="http://www.alexthissen.nl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/atarilynx/snap70_5F00_thumb_5F00_374C321C.png" width="154" height="240" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Go read the full story &lt;a href="http://bugbig.com/shocker-googles-android-logo-boosted-from-atari-lynx-title-gauntlet-the-third-encounter" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.alexthissen.nl/aggbug.aspx?PostID=22553" width="1" height="1"&gt;</description></item></channel></rss>
