<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	>

<channel>
	<title>Hyperwares Games</title>
	<atom:link href="http://hyperwares.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://hyperwares.com</link>
	<description>iPhone and iPod Touch Game Development</description>
	<pubDate>Fri, 31 Jul 2009 05:27:30 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Status update - 20 weeks</title>
		<link>http://hyperwares.com/2009/07/status-update-20-weeks/</link>
		<comments>http://hyperwares.com/2009/07/status-update-20-weeks/#comments</comments>
		<pubDate>Fri, 31 Jul 2009 00:38:07 +0000</pubDate>
		<dc:creator>Sel</dc:creator>
		
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://hyperwares.com/?p=427</guid>
		<description><![CDATA[In my last status update three months ago I said all the technical risks were overcome and I could focus on the actual gameplay. If you have a very limited amount of spare time for your project and find yourself in a similar position, here are a few hints that should help you get on with the task of [...]]]></description>
			<content:encoded><![CDATA[<p>In my last status update three months ago I said all the technical risks were overcome and I could focus on the actual gameplay. If you have a very limited amount of spare time for your project and find yourself in a similar position, here are a few hints that should help you get on with the task of creating a fun game:</p>
<ul>
<li>Don&#8217;t start a blog.</li>
<li>Don&#8217;t drag out the old junk you wrote a lifetime ago (and which no-one gives a rat&#8217;s toss about) in order to provide content for the blog.</li>
<li>If you need to write a tool to help you achieve something, stop writing it after a couple of hours when it does what you need, rather than spending a week polishing it up so you can stick it on your blog.</li>
</ul>
<p>Anyway, after the first month my only real progress (besides the blog) was to get text displayed in my game.</p>
<p>The second month was more interesting. After delving through all my old junk I found another half-finished Amiga game that could work really well on the iPhone. It seemed more achievable than the game I&#8217;d already started and the code I&#8217;d written could mostly be kept. So I decided to do that one instead.</p>
<p>I&#8217;ve come quite far with game number two but have discovered that the &#8216;fun factor&#8217; is heavily dependent on a lot of variables that will need polishing and balancing over time. So as the third month comes to a close, I have decided to remould game number one into a much smaller project and try to finish that one.</p>
<p>That&#8217;s right - Hyperwares currently has several games in the pipeline. We&#8217;re a software production powerhouse!</p>
<p>I should mention that I&#8217;d still probably be nowhere if I hadn&#8217;t gotten a leg-up with writing my OpenGL 2D engine. A chunk of code came from an early tutorial I found at <a href="http://www.71squared.co.uk" target="_blank">71 squared</a>. My code has diverged from that tutorial, but I&#8217;ll definitely return there in the weeks to come.</p>
]]></content:encoded>
			<wfw:commentRss>http://hyperwares.com/2009/07/status-update-20-weeks/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Convert a font to a bitmap and an array of rectangles</title>
		<link>http://hyperwares.com/2009/06/convert-a-font-to-a-bitmap-and-an-array-of-rectangles/</link>
		<comments>http://hyperwares.com/2009/06/convert-a-font-to-a-bitmap-and-an-array-of-rectangles/#comments</comments>
		<pubDate>Thu, 04 Jun 2009 00:26:49 +0000</pubDate>
		<dc:creator>Sel</dc:creator>
		
		<category><![CDATA[Useful]]></category>

		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://hyperwares.com/?p=291</guid>
		<description><![CDATA[Recently I&#8217;ve been working on adding text to my game. It turns out that you hit a few speedbumps when you attempt to add text output to your OpenGL game on the iPhone:

OpenGL ES does not have any support for rendering text. Bummer.
If you use Core Graphics or Cocoa Touch to draw your text over the top [...]]]></description>
			<content:encoded><![CDATA[<p>Recently I&#8217;ve been working on adding text to my game. It turns out that you hit a few speedbumps when you attempt to add text output to your OpenGL game on the iPhone:</p>
<ul>
<li>OpenGL ES does not have any support for rendering text. Bummer.</li>
<li>If you use Core Graphics or Cocoa Touch to draw your text over the top of an OpenGL view, your performance goes down the tubes.</li>
<li>If you resort to using Core Graphics, you can only use the inbuilt iPhone fonts. At the time of writing there does not appear to be any easy way for a developer to install new fonts, or even use a font file included in the app&#8217;s bundle.</li>
</ul>
<p>As far as I was concerned, the only respectable approach for a game was to use OpenGL to render the text. The standard approach is to put all the characters from the font into a texture, then render each character of your text as a textured quad. To do this you need to know the rectangle that each character occupies within the texture. If you had an array of these rectangles, you could compute the offset into the array using the ASCII code of the character itself and easily write a little function to draw a text string,  using the rectangle widths to proportionally-space the characters.</p>
<p>I found a funky free font at <a title="dafont.com" href="http://www.dafont.com" target="_blank">dafont.com</a> then started searching for a tool that would produce the texture image and rectangles automatically. There are lots of ad hoc solutions out there but nothing fit the bill exactly.</p>
<p>I wanted my font in a standard bitmapped image format so I could post-process it in Photoshop for gradients, drop-shadows and other effects. This meant that I needed to be able to add user-definable padding space around each character. I also wanted to be able to copy-paste the font characters into the same texture as my other game elements, so my game could avoid a texture-swap operation. And naturally I wanted each character&#8217;s bounding rectangle in a form I could easily paste into my Objective C code.</p>
<p>I ended up writing a Windows utility called <a title="Font Scraper" href="http://hyperwares.com/download/font-scraper/" target="_self">Font Scraper</a>. It lets you choose a font on your system and produces two files - a nice anti-aliased PNG containing characters in a colour of your choice over a transparent background, and a text file containing the rectangles which is suitable for pasting into a statically-initialized array in C, C++, C# or Objective C. The actual source code that makes use of these resources is left up to you!</p>
<p>Here&#8217;s a sample of a suitably game-like font, processed with Font Scraper then tweaked in Photoshop.</p>
<p><img class="alignnone" title="Font Scraper output" src="http://hyperwares.com/images/flubber26.png" alt="" width="512" height="282" /></p>
<p>I&#8217;m aware that proper <a href="http://en.wikipedia.org/wiki/Kerning" target="_blank">kerning</a> requires more information than just the bounding rectangle of each character, but I think that&#8217;s getting overly complicated for game use. If you need the best-possible rendering, then look at <a title="FreeType" href="http://freetype.sourceforge.net/" target="_blank">FreeType</a> instead. The rectangles produced by Font Scraper let you display simple proportionally-spaced type in your game.</p>
<p>When you display the string, your code may need to use an appropriate <a href="http://en.wikipedia.org/wiki/Tracking_(typography)" target="_blank">tracking</a> value to increase or decrease the space between characters. For example, if you use an italic or script-like font or you add padding, you will need to reduce your character spacing so that they overlap. Otherwise the characters will appear too far apart.</p>
<p>Unfortunately Font Scraper is for Microsoft Windows only, which I acknowledge might be frustrating when you consider that all iPhone developers have Macs. But I&#8217;m a Windows developer and my interest in programming for Apple platforms currently extends only to the iPhone, so now might be the time to check out Bootcamp!</p>
<p>Please leave any comments specific to Font Scraper itself on the <a title="Download Font Scraper" href="http://hyperwares.com/download/font-scraper/" target="_self">Font Scraper download page</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://hyperwares.com/2009/06/convert-a-font-to-a-bitmap-and-an-array-of-rectangles/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Croak! The Amphibian Migration Simulation for the Amiga</title>
		<link>http://hyperwares.com/2009/05/croak-the-amphibian-migration-simulation-for-the-amiga/</link>
		<comments>http://hyperwares.com/2009/05/croak-the-amphibian-migration-simulation-for-the-amiga/#comments</comments>
		<pubDate>Thu, 14 May 2009 02:33:31 +0000</pubDate>
		<dc:creator>Sel</dc:creator>
		
		<category><![CDATA[Retro]]></category>

		<category><![CDATA[amiga]]></category>

		<guid isPermaLink="false">http://hyperwares.com/?p=96</guid>
		<description><![CDATA[Croak! was written in 1992 because a friend wanted a decent Amiga version of Frogger. At that point I hadn&#8217;t managed to complete anything worthwhile for the Amiga, a machine which had so many other fun ways of wasting your time. Croak! took about a month to write, then I submitted it to Amiga Format magazine, and it took off [...]]]></description>
			<content:encoded><![CDATA[<p><div class="wp-caption alignleft" style="width: 330px"><img title="Croak! title screen" src="http://hyperwares.com/images/croak-title.gif" alt="Croak! title screen" width="320" height="256" /><p class="wp-caption-text">Croak! title screen</p></div></p>
<p>Croak! was written in 1992 because a friend wanted a decent Amiga version of <em>Frogger</em>. At that point I hadn&#8217;t managed to complete anything worthwhile for the Amiga, a machine which had so many other fun ways of wasting your time. Croak! took about a month to write, then I submitted it to <em>Amiga Format</em> magazine, and it took off from there.</p>
<p>If you are unfamiliar with the game concept then here is the synopsis from the readme file:</p>
<p><em>This program attempts to simulate, as accurately as possible, one of the most fascinating stages in the life-cycle of the Australian Cane Toad. As everyone knows, the eggs of the Cane Toad are laid within the carcasses of dead sheep. In this nutrient-rich environment the tadpoles quickly mature, and soon there are a multitude of young toads ready to begin their famous migration to the nearest creek or river bed. This journey frequently takes them across busy roads, and rivers whose erratic currents and high toxicity defy the bulky toad&#8217;s best attempts at swimming.</em></p>
<p><div class="wp-caption alignright" style="width: 330px"><img title="Croak! gameplay" src="http://hyperwares.com/images/croak-game.gif" alt="Croak! gameplay" width="320" height="256" /><p class="wp-caption-text">Croak! gameplay</p></div></p>
<p>Croak! was not an exact conversion of Frogger and never tried to be (one reviewer described it as perversion rather than conversion!) The only Frogger I&#8217;d ever played was <a href="http://trs80stuff.net/site/index.php?page=downloads&amp;type=entry&amp;id=198" target="_blank">Hoppy</a> for the TRS-80 Model 1. I didn&#8217;t even <em>like</em> Frogger and would have preferred to have released a completely original game. I know, however, that the success of Croak! was entirely due to the fact that there was a demand for Frogger on the Amiga. So I&#8217;d like to take this opportunity to kiss Konami&#8217;s butt and encourage everyone to buy whichever official Frogger they&#8217;re selling at the moment.</p>
<p>Croak! was never placed in the public domain. <em>Amiga Format</em> solicited for coverdisk submissions and paid me a token amount for the right to publish it, but that&#8217;s as far as it went. So now I officially declare Croak! to be in the public domain and all you people who copied it can finally sleep at night!</p>
<p>If you have an Amiga emulator (or a real Amiga) you can download <a href="http://hyperwares.com/downloads/croak.zip">CROAK.ZIP</a> which containes a bootable ADF file. Make sure you emulate an early Amiga like the A500, or the game will run too fast (as seen in the YouTube video below).</p>
<p><strong>Croak 2</strong></p>
<p>The sequel, Croak 2, was released in 1995, resplendent with magic butterflies, an NTSC mode for the Yanks, spreadable blood stains, less flicker, no speed issues and generally more polish. This time I included a shareware notice.</p>
<p><div class="wp-caption alignleft" style="width: 330px"><img title="Croak 2 title screen" src="http://hyperwares.com/images/croak2-title.gif" alt="Croak 2 title screen" width="320" height="256" /><p class="wp-caption-text">Croak 2 title screen</p></div></p>
<p>A friend of mine uploaded it to Adam, a local BBS. Two years later it appeared on an <em>Amiga User International</em> coverdisk.  Two very noble individuals have sent me the optional fee. Many thanks to them.</p>
<p>I later discovered it had a bug where the frog was invisible if you launched the game from Workbench on some Amigas (something to do with setpatch?) but it was fine if you booted into it.</p>
<p>If you want to play Croak today, then Croak 2 is the version to get. Download <a href="http://hyperwares.com/downloads/croak2.zip">CROAK2.ZIP</a> for the bootable ADF file.</p>
<table border="0" align="right">
<tbody>
<tr>
<td>
<form action="https://www.paypal.com/cgi-bin/webscr" enctype="application/x-www-form-urlencoded" method="post">
<input name="cmd" type="hidden" value="_s-xclick" />
<input name="hosted_button_id" type="hidden" value="5350147" />
<input alt="PayPal - The safer, easier way to pay online." name="submit" src="https://www.paypal.com/en_AU/i/btn/btn_donateCC_LG.gif" type="image" /> <img src="https://www.paypal.com/en_AU/i/scr/pixel.gif" border="0" alt="" width="1" height="1" /><br />
</form>
</td>
</tr>
</tbody>
</table>
<p>For a bit of fun, I&#8217;m going to maintain Croak 2&#8217;s status as shareware. Here&#8217;s a PayPal button to make it easy for you if you&#8217;ve been plagued by guilt all these years.</p>
<p><span id="more-96"></span><strong>Croak Links</strong></p>
<p>Having only recently discovered the extent of Croak&#8217;s presence on the net, my head is still spinning somewhat (and is appreciably larger too).</p>
<p><div class="wp-caption alignright" style="width: 330px"><img title="Croak 2 gameplay" src="http://hyperwares.com/images/croak2-game.gif" alt="Croak 2 gameplay" width="320" height="256" /><p class="wp-caption-text">Croak 2 gameplay</p></div></p>
<ul>
<li>Here&#8217;s a description and some reviews of Croak! over at <a href="http://www.lemonamiga.com/games/details.php?id=1876" target="_blank">Lemon Amiga</a>.</li>
<li>Here&#8217;s Croak! listed at the <a href="http://hol.abime.net/5397" target="_blank">Hall of Light</a>. Here&#8217;s the listing for <a href="http://hol.abime.net/5575" target="_blank">Croak 2</a>.</li>
<li>Here&#8217;s Croak 2 at <a href="http://aminet.net/package/game/jump/Croak2" target="_blank">Aminet</a>.</li>
<li>I&#8217;m flattered that somebody called Syndicate has actually created a <a title="Croak! at thegameslist.com" href="http://www.multigames.com/game/Croak_-CTdUNW_X" target="_blank">clone of Croak!</a> using Flash. It&#8217;s not exactly the same, but you can play it online right now (it&#8217;s <em>everywhere</em>). The graphics and sounds are mine, but for some reason the turtles are from <em>Frogger</em> and the frog has shrunk. The title screen music demonstrates quite effectively why the original Croak! didn&#8217;t have any.</li>
<li>See <a href="http://eab.abime.net/showthread.php?t=25592" target="_blank">this thread</a> where <em>bippym </em>has managed to fix the speed and invisible frog issues when running on a real Amiga, using something called <a href="http://www.whdload.de/" target="_blank">WHDLOAD</a>.</li>
</ul>
<p><strong>Croak in the Media</strong></p>
<p>Firstly I would like to express my extreme gratitude to all those over at the <a href="http://amr.abime.net/" target="_blank">Amiga Magazine Rack</a>. Until a week ago I knew that Croak! had been featured in six magazines. I had no idea that the count was almost double that!</p>
<p><div class="wp-caption alignright" style="width: 210px"><img title="Amiga Format 35 (spot Croak!)" src="http://hyperwares.com/images/amiga-format-35-cover.jpg" alt="Amiga Format 35" width="200" height="257" /><p class="wp-caption-text">Amiga Format 35 - can you spot Croak?</p></div></p>
<ul>
<li>Croak! first appeared in June 1992 in <a href="http://amr.abime.net/issue_191_pages" target="_blank">Amiga Format, Issue 35</a> (page 8) after I personally submitted it to them. It was included on the coverdisk and you can see it on the front cover too. They paid me something like forty pounds for the right to publish it (after I sent them a friendly reminder). From there, the ball really started rolling&#8230;</li>
<li>It was next picked up in September 1992 by <a href="http://amr.abime.net/issue_331_pages" target="_blank">The One Amiga, Issue 48</a> (page 9). Croak! is on coverdisk two and you can see a bit of it on the front cover. They said:<em> &#8220;Yes, it&#8217;s Frogger!  And not just any old Frogger.  We reckon it&#8217;s the best Amiga version of the classic arcade game yet.&#8221;</em></li>
<li>The same month it was reviewed in <a href="http://amr.abime.net/issue_17_pages" target="_blank">Amiga Power, Issue 17</a> (page 83). <em>&#8220;Croak is a polished version of the game. The controls are very positive so that you can wait quite happily until the very last second to make a jump if needs be. It also shifts at a fair old rate which is essential to make playing this type of game worthwhile.&#8221; &#8230; &#8220;As Frogger clones go this is first rate, but do we really need another one?&#8221;</em></li>
<li>The October 1994 editions of <em>Amiga Format</em> and <em>The One Amiga</em> both mentioned Croak in their reviews of the <em>Golden Oldies 2</em> PD compilation, the latter describing it as a <em>&#8220;superb Frogger clone&#8221;.</em></li>
<li>In January 1994 it was gushingly reviewed by <a href="http://amr.abime.net/issue_764_contents" target="_blank">Australian Commodore and Amiga Review, Vol 11 No 1</a>. <em>&#8220;Apart from the fact that it&#8217;s flawlessly programmed, the best thing about Croak is the simultaneous two-player mode, that transforms the game into a vicious contest for homes and bonuses.&#8221;</em> Their effusive praise might have something to do with the fact they were trying to flog it on a disk for five bucks.</li>
<li>In April 1994 Croak! appeared on a coverdisk attached to <a href="http://amr.abime.net/issue_866_pages" target="_blank">Amiga User International Vol 8 No 3</a> (page 10). <em>&#8220;Amphibian fun for everyone!&#8221;</em></li>
<li>In June 1994 it was included on the coverdisk of a French magazine <a href="http://amr.abime.net/issue_1791_coverdisks" target="_blank">Amiga Dream Issue 8</a>. There are no scans available but it was on page 7.</li>
<li>Croak! was reviewed again in August 1994 by the <a href="http://amr.abime.net/issue_354_pages" target="_blank">The One, Issue 71</a> (page 105). The reviewer was obviously a different person this time around: <em>&#8220;Sadly, this isn&#8217;t so much conversion as perversion, as Croak does little to duplicate the original Frogger other than capture its playability. The sounds are new and the dinky tunes that enhanced the original have gone. All that said, this still remains one of the more fun copies of an ageless classic.&#8221;</em></li>
<li>In October 1994, <a href="http://amr.abime.net/issue_1049_pages" target="_blank">Amiga CD32 Gamer, Issue 5</a> (page 6) said <em>&#8220;Everyone loves a good Frogger clone!&#8221;.</em> They included Croak! on their CD. A shame that it runs at twice normal speed on a CD32!</li>
<li>Croak 2 got its day in the sun in April 1997 when it was included on a coverdisk (The Great AUI Games Disk No. 1) attached to <a href="http://amr.abime.net/issue_902" target="_blank">Amiga User International Vol 11 No 4</a> (page 10). On this occasion I was sent a note of congratulations and a copy of the magazine!</li>
<li>And finally, Croak 2 was included on the coverdisk for <a href="http://amr.abime.net/issue_283_pages" target="_blank">Amiga Format, Issue 127</a> (page 82). The article&#8217;s author might have licked one-too-many cane toads though, because he mentions snakes, alligators and otters, none of which are in the game!</li>
</ul>
<p>Leaving the 20th century behind, I was delighted to find Croak! on YouTube. The emulator is obviously running way too fast, but who cares!</p>
<p><object width="425" height="344" data="http://www.youtube.com/v/ynoCCF1PaDc&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/ynoCCF1PaDc&amp;hl=en&amp;fs=1" /><param name="allowfullscreen" value="true" /></object></p>
<p><strong>Croak Trivia</strong></p>
<p>(As if most of the above <em>wasn&#8217;t</em> trivial!)</p>
<p><div class="wp-caption alignright" style="width: 170px"><img title="Croak 2 victory" src="http://hyperwares.com/images/croak2-victory.gif" alt="Croak 2 victory" width="160" height="172" /><p class="wp-caption-text">Victory!</p></div></p>
<ul>
<li>When Croak! starts, the subliminal message &#8220;Kate Bush is God - she really is!&#8221; can sometimes be seen briefly at the top of the screen. I have since come to accept that this statement probably isn&#8217;t wholly true.</li>
<li>To croak, of course, is to die. Add an exclamation point and it becomes a command. Quite a violent title, really. When you die, you leave a persistent blood stain on the road that later frogs can slip on. There are no less than ten different blood splatter images.</li>
<li>Croak was written in C on a 2MB Amiga 1000 with Phoenix replacement motherboard and 52MB Quantum Fireball hard disk.</li>
<li>The chicken and crow impersonations were made by me with a microphone and a digitizer. I can&#8217;t remember where I stole the croaking sound from.</li>
<li>The blood in Croak 2 is smearable. With a little effort, you can cover the whole road in blood. For a family game, I probably should have made the blood green.</li>
<li>There is a chicken on the other side of the road because a snake would be too wide to fit into a single sprite. It also makes a lot of sense to have a chicken on the other side of the road.</li>
<li>The original game runs flat-out which is why it is too fast on Amigas with a clock speed greater than 7.14MHz. It doesn&#8217;t use double-buffering, so it flickers a fair bit.</li>
<li>Croak 2 works out how far to move each row of cars or logs based on how much time has passed since the last move, so it runs at the same speed on all Amigas and smoother on faster ones. Flicker is almost eliminated by waiting until the raster beam has moved beyond each row before moving it.</li>
</ul>
<p><strong>The Butterfly Effect</strong></p>
<p>These are the effects of the various butterflies in Croak 2. Persistent effects last until the next butterfly is caught or disappears off the bottom of the screen.</p>
<ul>
<li>White gives you an extra frog</li>
<li>Pink awards 500 points</li>
<li>Red slows you down</li>
<li>Green speeds you up</li>
<li>Purple kills you</li>
<li>Cyan freezes the traffic</li>
<li>Magenta slows the traffic and river</li>
<li>Yellow speeds up the traffic and river</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://hyperwares.com/2009/05/croak-the-amphibian-migration-simulation-for-the-amiga/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Games I made when I was a kid #4 - Yacht</title>
		<link>http://hyperwares.com/2009/05/games-i-made-when-i-was-a-kid-4-yacht/</link>
		<comments>http://hyperwares.com/2009/05/games-i-made-when-i-was-a-kid-4-yacht/#comments</comments>
		<pubDate>Fri, 08 May 2009 09:15:01 +0000</pubDate>
		<dc:creator>Sel</dc:creator>
		
		<category><![CDATA[Retro]]></category>

		<category><![CDATA[trs-80]]></category>

		<guid isPermaLink="false">http://hyperwares.com/?p=63</guid>
		<description><![CDATA[This is the penultimate entry in this series of posts. For my final entry I plan to feature the game that made me an international superstar. No really - I actually physically met someone from overseas who knew me from that game. And this was before the Internet took off. But this isn&#8217;t that game.
Introducing  [...]]]></description>
			<content:encoded><![CDATA[<p><div class="wp-caption alignleft" style="width: 266px"><img title="Yacht" src="http://hyperwares.com/images/trs80-yacht.gif" alt="Yacht" width="256" height="192" /><p class="wp-caption-text">Yacht</p></div></p>
<p>This is the penultimate entry in this series of posts. For my final entry I plan to feature the game that made me an international superstar. No really - I actually physically met someone from overseas who knew me from that game. And this was before the Internet took off. <em>But this isn&#8217;t that game.</em></p>
<p><em></em>Introducing  Yacht - a Frankenstein&#8217;s monster of code that combined BASIC with machine language subroutines and was so difficult that I never even tried getting friends or family to play it.</p>
<p>The sad thing is that this was 1987. That makes me 16 or 17 years old and a first-year university student. It also makes the System-80 totally obsolete! What was I thinking? Well, I was too young for the University Bar&#8230;</p>
<p>You pilot your yacht around 9 different courses, adjusting your sail to make best use of the wind. The idea was to angle the sail so that if you imagined the wind bouncing off it, it would bounce behind you. It was actually possible (and frequently necessary) to tack into the wind like a real boat.</p>
<p>If you want to accept the challenge, load the <a href="http://hyperwares.com/downloads/yacht.cas">Yacht cassette image</a> into your emulator and follow these instructions:</p>
<p><span id="more-63"></span></p>
<p>You need to load the BASIC part first, then the machine language above it. They are both on the same tape.</p>
<ol>
<li>Reset the machine and set memory size to 28000.</li>
<li>CLOAD the BASIC component.</li>
<li>Load the machine language component with SYSTEM (Enter) Y (Enter)</li>
<li>Hit BREAK (Esc) at the second *?</li>
<li>RUN</li>
</ol>
<p>Are you seriously reading this&#8230;?</p>
<p>There are so many other games I could have featured from those days. Bricky Drop, Captain Bunny and Dancing Selly to name a few.  For now, they are merely names whispered through the intertubes. Maybe one day I&#8217;ll cave to the inevitable popular demand and show you them&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://hyperwares.com/2009/05/games-i-made-when-i-was-a-kid-4-yacht/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Games I made when I was a kid #3 - Stompy</title>
		<link>http://hyperwares.com/2009/05/games-i-made-when-i-was-a-kid-3-stompy/</link>
		<comments>http://hyperwares.com/2009/05/games-i-made-when-i-was-a-kid-3-stompy/#comments</comments>
		<pubDate>Fri, 08 May 2009 08:53:48 +0000</pubDate>
		<dc:creator>Sel</dc:creator>
		
		<category><![CDATA[Retro]]></category>

		<category><![CDATA[trs-80]]></category>

		<guid isPermaLink="false">http://hyperwares.com/?p=61</guid>
		<description><![CDATA[&#8220;Oh no!&#8221; you wail, &#8220;not another game he made when he was a kid that no-one played or cared about, and which no-one cares about now either!&#8221;
I&#8217;ve actually skipped at least ten games, so stop complaining. Stompy (1985) is a lot like the last game I featured, Splatter. The difference is that Splatter was written in [...]]]></description>
			<content:encoded><![CDATA[<p><div class="wp-caption alignleft" style="width: 266px"><img title="Stompy" src="http://hyperwares.com/images/trs80-stompy.gif" alt="Stompy" width="256" height="192" /><p class="wp-caption-text">Stompy</p></div></p>
<p>&#8220;Oh no!&#8221; you wail, &#8220;not another game he made when he was a kid that no-one played or cared about, and which no-one cares about <em>now</em> either!&#8221;</p>
<p>I&#8217;ve actually skipped at least ten games, so stop complaining. Stompy (1985) is a lot like the last game I featured, Splatter. The difference is that Splatter was written in Microsoft BASIC and Stompy is 100% Z-80 Assembly Language.</p>
<p>To play it, load the <a href="http://hyperwares.com/downloads/stompy.cas">Stompy cassette image</a> in your emulator. Type &#8220;SYSTEM&#8221;, then type &#8220;S&#8221;. When the game is loaded, type &#8220;/&#8221; to run it.</p>
<p>If you&#8217;re interested I&#8217;d like to tell you how you write a program in Assembler on a 48K <a href="http://classic-computers.org.nz/system-80/">Dick Smith System-80</a> cassette-based system&#8230;</p>
<p><span id="more-61"></span></p>
<ol>
<li>Insert cassette containing the Editor/Assembler program. Wait a couple of minutes for it to load, nursing the volume control to keep the meter in the yellow zone. If it loaded without a checksum error then run it.</li>
<li>Insert cassette containing your source code. Wait a couple of minutes for it to load. All the time keep praying that your code <em>will</em> actually load, and isn&#8217;t gone forever.</li>
<li>Make your changes in the editor.</li>
<li>Save your source code to tape (another couple of minutes). <em>Don&#8217;t use the same tape, you idiot.</em> <em>Multiple copies, multiple copies&#8230;</em></li>
<li>Assemble your code.</li>
<li>Save the assembled machine language to tape (another couple of minutes). <em>Wait.. that&#8217;s not the tape you just saved the code on is it? Arghhhh!</em></li>
<li>Reset the computer.</li>
<li>Load your machine code from tape (another couple of minutes)</li>
<li>Run your program and try to work out from the quick flash of garbage on the screen what went wrong.</li>
<li>Reset the computer.</li>
<li>Insert cassete containing the Editor/Assembler program&#8230;</li>
</ol>
<p>Needless to say, you want to minimize the number of build cycles. That&#8217;s why I wrote the code for the entire game in a notebook first. It is a matter of some pride to me that it <em>almost</em> worked first time.</p>
<p>Ahhh, the Dick Smith System-80 Blue Label edition. Lower-case characters! Inbuilt cassette with volume control! Woodgrain side panels! This was the greatest of all TRS-80 Model 1 clones. You youngsters today have no idea. I&#8217;m actually starting to get a little teary. How I loved that machine. No kidding, I&#8217;m actually sitting here starting to cry.</p>
]]></content:encoded>
			<wfw:commentRss>http://hyperwares.com/2009/05/games-i-made-when-i-was-a-kid-3-stompy/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Games I made when I was a kid #2 - Splatter</title>
		<link>http://hyperwares.com/2009/05/games-i-made-when-i-was-a-kid-2-splatter/</link>
		<comments>http://hyperwares.com/2009/05/games-i-made-when-i-was-a-kid-2-splatter/#comments</comments>
		<pubDate>Fri, 08 May 2009 06:33:18 +0000</pubDate>
		<dc:creator>Sel</dc:creator>
		
		<category><![CDATA[Retro]]></category>

		<category><![CDATA[trs-80]]></category>

		<guid isPermaLink="false">http://hyperwares.com/?p=57</guid>
		<description><![CDATA[Splatter (1984) is another game I wrote when I was a kid, that no-one ever played.
You are the guy on top of the rows of bricks. The bird-thing is trying to come up to the top. You try to kill the bird by jumping, which dislodges a brick beneath you to hopefully fall on its head. [...]]]></description>
			<content:encoded><![CDATA[<p><div class="wp-caption alignleft" style="width: 266px"><img title="Splatter" src="/images/trs80-splatter.gif" alt="Splatter" width="256" height="192" /><p class="wp-caption-text">Splatter</p></div></p>
<p>Splatter (1984) is another game I wrote when I was a kid, that no-one ever played.</p>
<p>You are the guy on top of the rows of bricks. The bird-thing is trying to come up to the top. You try to kill the bird by jumping, which dislodges a brick beneath you to hopefully fall on its head. Dislodge too many and you fall through.</p>
<p>As before, if you want to play this you will need a <a title="Matthew Reed's TRS-80 emulator" href="http://www.trs-80emulators.com/" target="_blank">TRS-80 Model 1 emulator</a> and the <a title="Protector TRS-80 Model 1 Cassette Image" href="http://hyperwares.com/downloads/splatter.cas">Splatter cassette image</a>. The game is written in BASIC, you type CLOAD to load it and RUN to run it.</p>
<p>Keep reading if you would like to see what the vintage BASIC source code looks like. I actually went to some effort to de-tokenize it from the cassette image, just for you.</p>
<p><span id="more-57"></span>Back then, whitespace and comments ate precious memory, so you didn&#8217;t use them. Statements were combined on the same line for speed, and lines at the start of the program ran faster. Your screen showed 16 lines of 64 characters, and you only had a line editor because a full-screen editor wouldn&#8217;t have fitted into your ROM.</p>
<p>People actually bought magazines containing source code like this, and typed it in themselves! This was a great way to learn programming, because if you typed a single character wrong, you had to work out where it was.</p>
<p>Somewhat embarassingly, this code reveals that Hyperwares used to be called SellySoft. It&#8217;s generally a bad idea to name a company after something your mother calls you, even an imaginary company.</p>
<pre>1 ' SPLATTER - BY SELWYN STEVENS
10 CLEAR:CLS:PRINT@(6,19),"SELLYSOFT INC PRESENTS..."
20 DATA28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,
60,76,76,44,28,52,91,90,89,91,64,60,86,51,71,81,44,44,84,72,56,8
0,60,30,75,91,91,59,29,30,31,29,30,31,29,64,60,72,56,44,52,28,39
,59,75,35,28,28,60,72,56,44,28,52,39,59,75,35,64
30 FORA=0TO2:FORD=1TO3:FORB=1TO6:READC:M$(A)=M$(A)+CHR$(100+C):N
EXT:IFD&lt;3M$(A)=M$(A)+CHR$(26)+STRING$(6,24):NEXTD,A:ELSENEXTD,A
35 B$(0)=LEFT$(M$(0),26)
37 C$(1)="KEEP SPLATTING, YOU ARE LOOKING GOOD!":C$(2)="LOOK OUT
, THIS GUY IS HOT!!":C$(3)="BRILLIANT!!! (JUST HANG IN THERE)"
40 FORA=1TO2:FORD=1TO2:FORB=1TO6:READC:B$(A)=B$(A)+CHR$(100+C):N
EXT:IFD=1B$(A)=B$(A)+CHR$(26)+STRING$(6,24):NEXTD,A:ELSENEXTD,A
42 FORB=16446TO16474:READD:POKEB,D:NEXT:POKE16526,62:POKE16527,6
4:DATA205,127,10,62,1,14,0,237,91,61,64,69,47,230,3,179,211,255,
13,40,4,16,246,24,242,37,32,241,201
45 GOTO1100
50 IFNK&gt;20THENGOSUB2000
52 FORA=258TO390STEP64:PRINT@A,STRING$(60,191):NEXT:PRINT@(15,2)
,STRING$(60,191);
60 BP=864:BX=6
70 FORA=1TO2:PRINT@P,M$(1);:PRINT@BP,B$(A);:Z=PEEK(14400):IFZ=32
ANDP&gt;66THENPRINT@P,M$(0);:P=P-6:ELSEIFZ=64ANDP&lt;118THENPRINT@P,M$
(0);:P=P+6:ELSEIFZ=1ORINKEY$=" "THEN200
80 Z=RND(10):IFZ=1ANDBX&gt;1ORZ=7ANDBX&gt;1PRINT@BP,B$(0);:BP=BP-6:BX=
BX-1:ELSEIFZ=2ANDBX&lt;10ORZ=8ANDBX&lt;10PRINT@BP,B$(0);:BP=BP+6:BX=BX
+1:ELSEIFZ=3ANDBP&lt;832THENPRINT@BP,B$(0);:BP=BP+64:ELSEIFZ=5ORZ=6
PRINT@BP,B$(0);:BP=BP-64:IFBP&lt;192THEN300
90 IFPEEK(P+15552)&lt;&gt;191THENFORD=PTO830STEP64:PRINT@BP,B$(1);:Q=U
SR(880+INT(D/20)):PRINT@D,M$(2);:PRINT@BP,B$(2);:PRINT@D,M$(0);:
NEXT:GOTO500:ELSENEXTA:GOTO70
200 PRINT@P,M$(2);:FORD=1TO10:Q=USR(900+RND(20)):NEXT:PRINT@P,M$
(1);:IFPEEK(P+15680)=191Y=P+320:GOTO210:ELSEIFPEEK(P+15616)=191Y
=P+256:GOTO210:ELSEFORD=PTO830STEP64:Q=USR(880+INT(D/20)):PRINT@
BP,B$(1);:PRINT@D,M$(2);:PRINT@D+192,STRING$(6,191);
205 PRINT@BP,B$(2);:PRINT@D,M$(0);:NEXT:GOTO500
210 FORD=YTO959STEP64:PRINT@D,STRING$(6,191);:IFPEEK(BP+15360)=1
91THEN600:ELSEQ=USR(1100+INT(D/20)):PRINT@D," ";:NEXTD:GOTO70
300 PRINT@BP-64,"HOORAY";:FORA=1TO20:PRINT@BP,B$(1);:FORB=1TO30:
NEXT:PRINT@BP,B$(2);:FORB=1TO30:NEXT:NEXT:GOTO1000
500 PRINT@D,"SHPLAT";:PRINT@D+64,STRING$(2,176)STRING$(2,188)STR
ING$(2,176);:PRINT@D+128,STRING$(6,191);:FORJ=1TO25STEP2:Q=USR(9
40+J):NEXT:GOTO1000
600 PRINT@D,STRING$(6,191);:PRINT@D+64,"CRUNCH";:NK=NK+1:PRINT@(
0,60),NK;:FORE=1TO5:Q=USR(985-RND(20)):NEXT:PRINT@D,B$(0);:IFNK=
KNTHENKA=KA+1:KN=KN+KA:PRINT@(0,60),NK;:GOTO50:ELSE60
1000 PRINT@(8,19),"YOU LOSE. YOUR SCORE:"NK;:Q=USR(150):Q=USR(20
0)
1005 IFNK&gt;HSTHENHS=NK
1100 CLS:T$="&lt;&lt;&lt; SPLATTER - HIGH SCORE:"+STR$(HS)+" - HIT 'S' TO
 START ":FORA=504TO451STEP-2:Q=USR(990):FORB=1TO2:PRINT@A,B$(B)L
EFT$(T$,504-A);:PRINT@A-6," ";:PRINT@A+6," ";:FORC=1TO4:IFINKEY$
&lt;&gt;"S"THENNEXTC,B,A:FORA=1TO5000:IFINKEY$&lt;&gt;"S"THENNEXT:GOTO1100
1110 P=66:NK=0:KN=4:KA=4:NC=0:CLS:GOTO50
2000 IFNK&gt;48THEN2010:ELSENC=NC+1:CLS:PRINT@(7,32)-LEN(C$(NC))/2,
C$(NC);:PRINT@(8,20),"YOU ONLY NEED"49-NK"MORE!!";:FORA=1TO50:FO
RB=1TO2:X=USR(950):PRINT@(7,5),B$(B);:PRINT@(7,52),B$(B);:FORC=1
TO10:NEXTC,B,A:CLS:RETURN
2010 Y$="":U$="*CHAMPION* ":FORA=1TO6:Y$=Y$+U$:NEXTA:CLS:PRINT@(
7,17),"C O N G R A T U L A T I O N S !";:PRINT@(8,13),"YOU ARE T
HE GREATEST SPLATTERER EVER!!!";
2020 FORV=1TO50:FORA=1TO13STEP3:PRINT@(5,0),MID$(Y$,A,64);:PRINT
@(10,0),MID$(Y$,A,64);:FORB=1TO2:PRINT@(6,1),M$(B);:PRINT@(6,57),
M$(B);:X=USR(800+RND(200)):NEXTB,A,V:GOTO1005</pre>
]]></content:encoded>
			<wfw:commentRss>http://hyperwares.com/2009/05/games-i-made-when-i-was-a-kid-2-splatter/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Games I made when I was a kid #1 - Protector</title>
		<link>http://hyperwares.com/2009/05/games-i-made-when-i-was-a-kid-1-protector/</link>
		<comments>http://hyperwares.com/2009/05/games-i-made-when-i-was-a-kid-1-protector/#comments</comments>
		<pubDate>Wed, 06 May 2009 01:12:48 +0000</pubDate>
		<dc:creator>Sel</dc:creator>
		
		<category><![CDATA[Retro]]></category>

		<category><![CDATA[trs-80]]></category>

		<guid isPermaLink="false">http://hyperwares.com/?p=53</guid>
		<description><![CDATA[This is the first entry in a series that will showcase games I wrote when I was a kid that no-one ever cared about or played. No-one. Nobody cared what I did alone in my room for hours on end. Maybe they thought I was doing something else. Anyway, I&#8217;m not bitter.
This game is called [...]]]></description>
			<content:encoded><![CDATA[<p><div class="wp-caption alignleft" style="width: 266px"><img title="Protector" src="/images/trs80-protector.gif" alt="Protector" width="256" height="192" /><p class="wp-caption-text">Protector</p></div></p>
<p>This is the first entry in a series that will showcase games I wrote when I was a kid that no-one ever cared about or played. No-one. Nobody cared what I did alone in my room for hours on end. Maybe they thought I was doing something else. Anyway, I&#8217;m not bitter.</p>
<p>This game is called Protector. The guy with the gun is you. The guys with the clubs are harp seal hunters. The things on the right are harp seals. One of them has been clubbed and skinned already&#8230;</p>
<p>According to the title screen, this game was made back in January 1984, which would have made me a very disturbed 13 year old environmentalist. To this day I still can&#8217;t explain why everyone appears to be wearing clown shoes.</p>
<p>If for some bizarre reason you want to play this, you will need a <a title="Matthew Reed's TRS-80 emulator" href="http://www.trs-80emulators.com/" target="_blank">TRS-80 Model 1 emulator</a> and the <a title="Protector TRS-80 Model 1 Cassette Image" href="http://hyperwares.com/downloads/protect.cas">Protector cassette image</a>. The game is written in BASIC, you type CLOAD to load it and RUN to run it. That&#8217;s as much help as I&#8217;m going to give you. I suspect that if you&#8217;re into this sort of thing, you&#8217;ll really enjoy working out the rest! You&#8217;ll certainly enjoy it a lot more than actually playing the game.</p>
]]></content:encoded>
			<wfw:commentRss>http://hyperwares.com/2009/05/games-i-made-when-i-was-a-kid-1-protector/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Reducing your game&#8217;s power consumption</title>
		<link>http://hyperwares.com/2009/05/reducing-your-games-power-consumption/</link>
		<comments>http://hyperwares.com/2009/05/reducing-your-games-power-consumption/#comments</comments>
		<pubDate>Tue, 05 May 2009 21:24:10 +0000</pubDate>
		<dc:creator>Sel</dc:creator>
		
		<category><![CDATA[Useful]]></category>

		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://hyperwares.com/?p=32</guid>
		<description><![CDATA[Battery life is the one major thing I hope improves with the next generation of iPhones and iPod Touches. My wife and I use our Touches almost exclusively for gaming, and nothing sucks juice like my wife playing games. She will typically drain a full battery in one gaming session - we&#8217;re talking about less [...]]]></description>
			<content:encoded><![CDATA[<p>Battery life is the one major thing I hope improves with the next generation of iPhones and iPod Touches. My wife and I use our Touches almost exclusively for gaming, and nothing sucks juice like my wife playing games. She will typically drain a full battery in one gaming session - we&#8217;re talking about less than two hours here.</p>
<p>Don&#8217;t tell her, but I&#8217;ve just bought her a USB charger for Mother&#8217;s Day (no, I&#8217;m not married to my mother, but my wife is a mother and she thinks that entitles her to presents from <em>everybody</em>). She can hopefully then just sit in bed plugged in to the mains and stop bugging me to recharge the thing.</p>
<p>So this brings us to the topic of the day. What are the things that we developers can do to reduce battery usage and the carbon footprint of our games? I have three suggestions, and they are all related to frame rate.</p>
<p><strong>1) Use the minimum frame rate that looks good</strong></p>
<p>The iPhone and Touch can update their screens at a maximum of 60 frames a second. So there&#8217;s no point going faster than that - give your app little microsleeps. With people, microsleeps can make you feel more refreshed. Conversely, the idea with games is that they will make your screen <em>less</em> refreshed. (Did I just make that lame joke? Slap me!)</p>
<p>Don&#8217;t stop there, though. Try running your app at 30 frames a second. If it still looks smooth enough, then cap it there. Your app is now napping for about half the time. Obviously this won&#8217;t make the battery last twice as long, but since your game is using the CPU and graphics half as much, this will make a big difference.</p>
<p><strong>2) Don&#8217;t draw frames if nothing changed</strong></p>
<p>Suppose we are running our game at 30 FPS. The logic will be updating at this rate, but if nothing is moving or animating then there&#8217;s no point compositing the scene again. Give the graphics chip a rest.</p>
<p><strong>3) Use Variable Framerate Technology for Games</strong></p>
<p>The first two suggestions were pretty obvious, but I&#8217;m really excited about this one, although its probably only suited to 2D games. Variable Framerate Technology for Games, or <strong>VFRG</strong> is a cool (IMHO) idea I just came up with.</p>
<p>The basic idea is to dynamically adjust your framerate based on how fast your objects are moving or animating. Some video compression schemes do a similar thing.</p>
<p>Here&#8217;s an example:</p>
<ul>
<li>Firstly, work out how smooth you absolutely need your motion to be. Let&#8217;s say we are happy to move our objects in <strong>4-pixel</strong> jumps.</li>
<li>At the top of your game loop, store the current time (accurate to at least milliseconds)</li>
<li>After you&#8217;ve done all your game logic, find the fastest moving object on screen. Suppose this object is travelling at a speed of <strong>100 pixels per second</strong>. Divide this by <strong>4</strong> to get a target rate of <strong>25 FPS</strong>.</li>
<li>Then find the fastest <em>animating</em> object on screen (assuming a flip-book style of animation). For this example, let&#8217;s assume that this object is animating at a speed less than 25FPS, so we won&#8217;t consider it. But if it was animating faster, we would increase the target rate accordingly.</li>
<li>Divide 1000 by the target rate, to get an update interval of <strong>40 milliseconds</strong> in this case.</li>
<li>Draw your scene.</li>
<li>Using the time you stored earlier and the current time, work out how many milliseconds have passed. Subtract this from <strong>40</strong>, and go to sleep for the result (assuming the result is non-negative!).</li>
<li>Rinse and repeat.</li>
</ul>
<p>I&#8217;ve got this working with my game at the moment, in conjunction with an upper framerate cap of 30FPS. I have a little overlay display that shows me the number of frames drawn each second, and can see this drop from 30 down to as low as 10 depending on how fast things are moving.</p>
<p>The only area where this all comes unstuck is in responding to user input. For reasons of responsiveness, chances are you don&#8217;t want to detect changes in finger position at a rate of 10 times a second or less. You can compensate for this by putting a lower threshold on frame rate (e.g. 15FPS) and perhaps override VFRG and run at your upper rate limit whenever a finger is in contact with the screen.</p>
<p>Now I&#8217;m just going to fire up Photoshop and design a funky little green logo for VFRG to stick on my loading screen! I&#8217;m only half joking - <em>if you&#8217;re smart you can use low battery consumption as a major selling point for your game.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://hyperwares.com/2009/05/reducing-your-games-power-consumption/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Status update - 8 weeks</title>
		<link>http://hyperwares.com/2009/05/status-update-8-weeks/</link>
		<comments>http://hyperwares.com/2009/05/status-update-8-weeks/#comments</comments>
		<pubDate>Mon, 04 May 2009 21:48:45 +0000</pubDate>
		<dc:creator>Sel</dc:creator>
		
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://hyperwares.com/?p=17</guid>
		<description><![CDATA[It&#8217;s been eight weeks since I received my Mac Mini, which is an eternity in iPhone development time - so how far have I progressed since then?
I&#8217;ve been developing C++/MFC applications for Windows full-time for 11 years. Two months ago I knew nothing about OSX, Xcode, Objective C, Cocoa Touch and OpenGL ES - all of which I needed [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s been eight weeks since I received my Mac Mini, which is an eternity in iPhone development time - so how far have I progressed since then?</p>
<p>I&#8217;ve been developing C++/MFC applications for Windows full-time for 11 years. Two months ago I knew nothing about OSX, Xcode, Objective C, Cocoa Touch and OpenGL ES - all of which I needed to master and which presented a considerable learning curve. I just had to trust that my career had given me the skills and experience to adapt to these technologies. I had also written a successful public domain game for the Amiga way back in 1992. This gave me enough confidence in my abilities to splurge the money on the hardware and start on this journey.</p>
<p>OSX wasn&#8217;t hard to adapt to, once Apple&#8217;s <a href="http://hyperwares.com/2009/05/how-to-fix-osx-mouse-acceleration/" target="_self">awful mouse driver was replaced</a>. The inability to easily maximize windows to the entire screen is the worst thing for me. I always work full-screen on Windows and don&#8217;t see any benefit to having bits of  junk visible around the edges of the window I&#8217;m working in. It&#8217;s just distracting and a waste of space. If I need to see two windows at once, I put them on different monitors. Unfortunately I don&#8217;t have that luxury on the Mac Mini at the moment.</p>
<p>Xcode seems a bit temperamental and I haven&#8217;t fully mastered it yet. But I&#8217;m going to go out on a limb and say that Microsoft easily rules the roost when it comes to development tools.</p>
<p>Learning Objective C was kind of like those Magic Eye pictures. I&#8217;ve been writing C++ code for fifteen years, but Objective C looked bizarre with its square brackets everywhere. Then after a short while, and crossing my eyes at the screen, suddenly something flipped and it all made sense.</p>
<p>So far all my Cocoa code has been ripped out of demos. You don&#8217;t really need much if you&#8217;re writing a game.</p>
<p>As for OpenGL ES, I stole enough code from the internet to make a 2D layer on top of it, and now I don&#8217;t need to think about it ever again!</p>
<p>I am currently at the point where I have a nice 2D engine which is throwing lots of objects around the screen, colliding and rebounding nicely off walls and each other. The direction of the objects can be altered by swiping with a finger. I also have some nice art assets developed. This is the foundation for a lot of possible games but I don&#8217;t want to show my hand just yet.</p>
<p>As far as I can see, the major technical challenges are now out of the way and I can just get on with writing the actual game. Soon it will be time to take some long-service leave from my full-time job and attack this project with all my energy.</p>
]]></content:encoded>
			<wfw:commentRss>http://hyperwares.com/2009/05/status-update-8-weeks/feed/</wfw:commentRss>
		</item>
		<item>
		<title>How to fix OSX mouse acceleration</title>
		<link>http://hyperwares.com/2009/05/how-to-fix-osx-mouse-acceleration/</link>
		<comments>http://hyperwares.com/2009/05/how-to-fix-osx-mouse-acceleration/#comments</comments>
		<pubDate>Mon, 04 May 2009 19:28:16 +0000</pubDate>
		<dc:creator>Sel</dc:creator>
		
		<category><![CDATA[Useful]]></category>

		<category><![CDATA[osx]]></category>

		<guid isPermaLink="false">http://hyperwares.com/?p=9</guid>
		<description><![CDATA[As a long-time Windows developer new to the Mac, it took all of five seconds before I realized something felt horribly wrong with the mouse on OSX. The pointer would consistently stop short of the spot I was aiming for. As my hand slowed down, the pointer slowed down even faster, making those final few [...]]]></description>
			<content:encoded><![CDATA[<p>As a long-time Windows developer new to the Mac, it took all of five seconds before I realized something felt horribly wrong with the mouse on OSX. The pointer would consistently stop short of the spot I was aiming for. As my hand slowed down, the pointer slowed down even faster, making those final few pixels a chore to traverse.</p>
<p>Apparently Apple changed this between OS9 and OSX and there is no official way to configure it more to your liking. I find it really quite amazing that they could screw up the fundamental core of the whole Macintosh user experience and leave it completely busted for numerous revisions since.</p>
<p>Oh dear, this isn&#8217;t really setting the right tone. Apple-bashing on an iPhone developer&#8217;s blog, in only the second post? I can almost feel the mighty fist of Steve Jobs hovering over me, ready to smite my provisioning profile into tiny pieces and banish me back to the bowels of Windows from whence I came.</p>
<p>To be fair, I&#8217;m sure there are lots of people who are happy with the mouse acceleration in OSX. But they&#8217;re probably all using trackpads.</p>
<p>For those people who are less than happy, rejoice for help is at hand. And it comes from the most benign and benevolent of sources - Microsoft!</p>
<p>Just download the <a href="http://www.apple.com/downloads/macosx/drivers/intellipointandintellitypepro.html" target="_blank">IntelliPoint driver</a> and make your Mac usable. You don&#8217;t need to be using a Microsoft mouse. Thankyou thankyou thankyou Bill!</p>
<p>(See <a href="http://db.tidbits.com/article/8893" target="_blank">this article</a> at TidBITS for a more detailed analysis and some less optimal solutions)</p>
]]></content:encoded>
			<wfw:commentRss>http://hyperwares.com/2009/05/how-to-fix-osx-mouse-acceleration/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>

