Home -- News: 2 January 2021 -- Source Code -- Videos -- LinkedIn -- About

Latest Publications

Dreamscape and Eclipse: The Final Cut (29 July 2019, updated 4 January 2020)

A 2019 remastering of the Triumph Amiga demos Dreamscape and Eclipse, released at The Gathering 1996 and 1997. We recovered the original video and music files from my Amiga, including some unused hi-res images. The music was remixed, the font was replaced, the video files were resampled, scaled to 1080p and denoised and retimed to the new music. It's low res, it's gritty, it's 1996 all over again, with a 2019 flair.

A Different Method for Image Transformations (9 March 2018, updated 26 July 2019)

Image transformations using separable filters can be implemented as a vertical pass followed by a horizontal pass. They usually differ in their implementation, and the horizontal one is slower. A new method is presented where the passes are almost similar by ordering and transposing data in a specific manner. This may be faster on architectures where the L1 cache is large enough to hold a temporary dataset of 8 lines. SSE2 and ARM NEON implementations are provided.

Integer Raytracing on Mellanox TILE-Gx (5 June 2017)

A second attempt at raytracing on the Mellanox TILE-Gx. The TILE-Gx has very limited floating point support in hardware, so let's try using fixed point math instead. Unfortunately, calculating square roots is very time consuming. An alternative approach is explored where custom conversion routines and integer math does this quickly enough to render 40 spheres in 1080p60. Videos and source code included.

GPURay - GPU+CPU Raytracer for NVidia Tegra X1 (3 February 2017)

The GPU only raytracer described in my 2016 article "GPU Hacks" can trace 80 spheres at 60 fps on the NVidia Tegra X1. This new article describes how to use CPU preprocessing to boost the sphere count to 128 with minimal changes to the GPU part. Videos and source code is included.

SRTP AES Optimization Revisited (27 July 2016)

In a 2010 article titled "SRTP AES Optimization" I presented a method to make SRTP AES run significantly quicker. Unfortunately, there were some caveats: Packet length had to be 4096 bytes or less and a multiple of 16, and the target CPU was expected to be big endian. Let's try to address these issues in a new and improved version that will run on any 32-bit CPU.

Older articles in the archive


The Xmas Demo 2020 Edition (2020)

Based on the old Xmas Demo 2017 that was tightly tied to Android and NVidia Jetson TX2. This new version actually compiles and runs on both Windows and Linux. NVidia specific shader details replaced. Tested on some random AMD cards. Seemed to work ok. While the shaders are still mostly the same, we replaced the fonts, the graphics, the music, and fixed a busload of bugs.

MultiQuake - Quake for TILE-Gx CPUs (5 May 2014 - 4 Aug 2016)

MultiDoom - Doom for TILE-Gx CPUs (2 June 2009 - 4 Aug 2016)

Ports of Quake and Doom for TILE-Gx multicore CPUs. Number of Quakes or Dooms possible to run in parallel is only limited by your screen size. Custom TILE-Gx specific scalers, including 2x and 3x EPX.

TANDBERG Secrets (1999-2010)

Pictures of hidden menus and unreleased protoypes I worked on in the Classic and MXP days.

Source Code and Schematics for PCTVNet HomePilot Set Top Box (1998-1999)

Source code used to run the HomePilot internet box back in 98-99. Not all; it's only what I had checked out on my last day. Might be interesting for code archaelogists. Also Schematics for 2.0 hardware.

Triumph Amiga Demos and Source Code (1985-1995)

Source code, videos and other stuff from the Amiga years.

Other Stuff