Projects
- Porting Commander Keen to PlayStation Vita - In Progress
- Porting Commander Keen to WebAssembly - Nov 2019
- Learning About Webassembly - Nov 2019
- Ultimate Retrogaming Machine - Oct 2018
- Atari ST on the Web - Jun 2018
- Shooting and Sharing VR Photos - Nov 2016
- Transferring Files Between PC and ST - Mar 2016
- Playing Downloaded Games on Real ST Hardware - Sep 2015
- Watch Mobile Content on the Go - Dec 2014
- Ghost Blogging - Jun 2014
Porting Commander Keen to PlayStation Vita
Status | In Progress |
Goal | Bring the DOS classic Commander Keen to PlayStation Vita. |
I’ve wanted to explore cross-compilation (i.e. building code on one platform for execution on another) for a while. I’m also passionate about bringing classic retro games to a new audience.
With the advent of h-encore, pretty much any PlayStation Vita can now be unlocked to run homebrew code. There’s also the Vita SDK development framework available to help create working binaries. So the Vita seems like a great target platform.
I’m aiming to bring Commander Keen (in the form of CloneKeen) to the Vita. The source code is C/C++ and uses the multiplatform SDL development library, so should be relatively portable. I’m also looking for improvement opportunities over the orignal release (e.g. level editor, increased resolution).
So far I have the game engine running, but need to add controller support.
Posts:
- Game engine successfully running on a real Vita - 10 Nov 2019
Porting Commander Keen to WebAssembly
Status | Completed November 2019 |
Goal | Port Commander Keen to WebAssembly, making it playable in the Browser |
I’ve wanted to find a creative outlet for my recently-acquired WebAssembly skills. I’m also passionate about bringing classic retro games to a new audience.
I used Emscripten to port Chocolate Keen to WebAssembly. The initial goal was to refactor the entire code base to Emscripten Loops but this proved too much effort. In the end I found a working (but slower) solution using Emterpreter.
I’m happy with the end result. Play Commander Keen in the browser right here, find instructions here and source code on GitHub.
In future, I could refactor towards Emscripten Loops to improve performance and add on-screen controls for mobile devices.
Posts:
- The Commander Keen WebAssembly port is done! - 02 Nov 2019
- Commander Keen in a Web Browser? - 28 Oct 2019
- Porting Commander Keen / CloneKeen to the web browser with #Emscripten. Great progress so far! - 20 Oct 2019
Learning About WebAssembly
Status | Completed November 2019 |
Goal | Learn about WebAssembly. Understand how to make C/C++ code run in the Browser. Code some “Hello World” examples and document my findings |
I’ve wanted to explore the WebAssembly ecosystem for a while. I learn best by sharing what I learn, so I’ve written up my findings as WebAssembly Lessons:
- Lesson 1: WebAssembly Hello World - 30 Nov 2019
- Lesson 2: Graphics with SDL - 01 Dec 2019
- Lesson 3: Emscripten Loops - 03 Dec 2019
- Lesson 4: File System Access - 08 Dec 2019
Ultimate Retrogaming Machine
Status | Completed October 2018 |
Goal | Build a cheap, small and light device to retrogame on the big screen |
I’m a big fan of retro games, with many fond memories of the 8-bit and 16-bit years. Looking for a way to relive those memories on the big screen.
I selected the Raspberry Pi and RetroPie as the base for my build. After a week of on/off tweaking, I found optimal settings and documented the full setup here. For Phase 2, I configured Moonlight Game Streaming to allow low latency streaming of more demanding titles from my gaming PC.
Overall very pleased with the result, and pleasantly surprised by how well Moonlight Game Streaming works.
Posts:
- RetroPie Ultimate Setup Guide - 08 Oct 2018
- Stream PC Games to your RetroPie with GameStream and Moonlight - 08 Oct 2018
Atari ST on the Web
Status | Completed June 2018 |
Goal | Connect my venerable Atari ST to the World Wide Web. Browse some sites! |
The Atari ST was released in 1985. Is it usable on the modern Web today? How far can I push the experience?
Starting with a NetUSBee Ethernet adapter, I installed TOS drivers and the STinG TCP/IP stack. I also used an ET4000 graphics card to push the resolution to a (somewhat) modern 1024x768 in 256 colours.
With those (and a successful TCP/IP ping) in place, I downloaded and configured Crystal Atari Browser (CAB).
The Web experience is slow and doesn’t support CSS - which rules out a lot of content. However I was able to make older sites work.
In search of a better experience: it might be possible to use a proxy server to strip CSS and shrink images. Or use a text-based browser like Lynx. Browsh also looks interesting. Lots of avenues for future investigation!
Shooting and Sharing VR Photos
Status | Completed November 2016 |
Goal | Learn how to shoot, interactively view and share VR photos |
Ever seen one of these photos where you can interactively zoom and pan around? They’re known as 360° or VR photos.
More formally, VR photography (Virtual Reality photography) is the art of capturing or creating a complete scene as a single image, as viewed when rotating about a single central position
I want to learn now how to shoot, interactively view and share my own VR photos. Here’s what I found:
- Equirectangular Projection is the most common VR image format. Another popular option is Cubic Projection and you can easily convert between the two
- The Google Street View mobile app (iOS, Android) is a cheap and easy way to shoot Equirectangular projections
- Since Equirectangular images are heavily distorted, you need a “viewer” program to interact with them
- Windows has built-in support via the .pano file extension. It’s relatively easy to create your own
- Web viewers are also popular. Here’s how to publish VR photos to Photosyth, Facebook and YouTube
Posts:
- Publishing VR Panoramas to YouTube - 08 Sep 2019
- All You Need to Know about 360 VR Photos - 02 Nov 2016
- Convert Equirectangular Projection to .Pano File - 30 Oct 2016
- What are .pano files? - 29 Oct 2016
- Publishing VR Panoramas to Photosynth - 28 Oct 2016
- Convert Equirectangular Projection to Cube Faces - 18 Oct 2016
- Installing Hugin and Panotools on Windows - 17 Oct 2016
- Publishing VR Panoramas to Facebook - 12 Oct 2016
Transferring Files Between PC and ST
Status | Completed March 2016 |
Goal | Explore the various ways to share files between PC and Atari ST |
Can my Atari ST interoperate with modern PCs? What are the best ways to send files back and forth?
I explored several ways to transfer files between PC and Atari ST, including:
- Using an SD card and Ultrasatan to Transfer Files from PC to ST - 08 Mar 2016
- Using Ethernet to Transfer Files from PC to ST - 07 Mar 2016
- Using PARCP-USB to Transfer Files from PC to ST - 24 Feb 2016
- Using Serial Cable and ZMODEM to Transfer Files from PC to ST - 13 Feb 2016
- Using Serial Cable and Ghostlink to Transfer Files from PC to ST - 06 Feb 2016
- Using Floppy Disk to Transfer Files from PC to ST - 30 Jan 2016
I also took a detour into file compression, and learned how to split large files into chunks that can be individually copied using (for example) floppy disks:
Playing Downloaded Games on Real ST Hardware
Status | Completed September 2015 |
Goal | Download an Atari ST game image from the web and play it on my real ST |
My old ST disks are dead! Can I download replacement disk images from the web and play on my physical ST?
I explored several options, including floppy disk images and hard disk adaptations:
- Use Your PC to Create a Bootable Atari ST Game Disk - 22 Sep 2015
- Playing Downloaded Games on a Real Atari ST - 18 Sep 2015
Watch Mobile Content on the Go
Status | Completed December 2014 |
Goal | Download video content to my mobile device so I can watch it on the go |
Update Dec 2019: YouTube has emerged as the dominant platform for Web video. In future, it makes sense to look at the YouTube API. Can I automatically download every video tagged to the “Watch Later” playlist for offline consumption?
The work commute is a great time to catch up on news, vlogs and other Web videos. But cellphone signal is way too patchy for reliable streaming - especially in the subway.
I explored use of the Pocket API and PlexSync to download and push web videos to my phone:
- Sync Web Videos to Your Tablet or Phone, Watch Them Offline - 01 Feb 2015
- Download Pocket Videos to Your PC - 03 Jan 2015
- I Can’t Stream Video on the Commute. How Can I Fix It? - 17 Dec 2014
Ghost Blogging
Status | Completed June 2014 |
Goal | Learn how to use the Ghost blogging platform |
Update Jun 2018: I now use Jekyll and GitHub Pages as my blogging platform.
I’m interested in Ghost as a crisp, clean, lightweight blogging platform. I took some time to learn about the platform, setup my own developmemt environment and even write my own theme. Findings below.
Posts:
- Things I Wish I’d Known Before Creating My Own Ghost Theme - 23 Jun 2014
- It’s Done! 8-Bit Memories Ghost Theme - 21 Jun 2014
- Create Your Own Ghost Theme in 5 Minutes - 10 Jun 2014
- Setting Up a Ghost Dev Environment - 17 May 2014
- Getting to Grips With Ghost Themes - 24 Apr 2014