This is a preview version of Cyotek's blog and may be missing functionality and/or unstable. Please visit https://www.cyotek.com/blog for the current version of the blog.
If you encounter any problems using this preview site, please contact us with the details.

Writing DOOM WAD files

doom wad 0 Comments

In a prior post, I described id's WAD format used by classic games such as DOOM and how to read them. This post covers how to write them. As with my first post, this only covers the original WAD format, not the enhanced ones which followed.

A brief recap on the format. There is a 12 byte header which details the wad type, the number of lumps of data it contains, and an offset where the directory index is located.

Read More

Decoding DOOM Picture Files

doom 0 Comments

In my previous post, I described id's WAD format used by classic games such as DOOM and how to read them. While researching the format though, I wasn't 100% sure that I was extracting lumps properly - the only readable file I'd discovered was DMXGUS in DOOM1.WAD, and also LICENSE in DARKWAR.WAD... hardly conclusive.

Armed with the specification from the DOOM FAQ, I decided to take a brief segue into decoding the pictures to verify the lumps I was extracting were valid.

Read More

Reading DOOM WAD Files

doom wad 0 Comments

WAD "Where's All the Data" files used by DOOM and various other games are simple containers, similar to zip and other archive formats, without additional complexity (such as compression) and data-centric rather than file. This article describes how to read the WAD files used by DOOM, DOOM II, Rise of the Triad and similar games of that era. Yes, I'm talking DOS and 1993, not the more modern reboots.

The article only covers reading of a WAD and extracting its contents, it does not cover the format of the individual data within given that the data is application dependent. With that said, I'll be covering the DOOM picture format in the next article.

Read More

A review of the Argon ONE Raspberry Pi 4 Case

review raspberry pi argon one 1 Comments

This is my own review using hardware I researched and bought myself. There are no affiliated links in this article.

When the Raspberry Pi was originally announced in 2012 I rapidly pre-ordered the Model B and tried my best to use it as a normal computer. Regretfully, the hardware was just not suitable - I couldn't even use it for the most basic of web-browsing, let alone any work. I tried again when the Pi 2 was released and was just as disappointed by that. With that said, 8 years later that original Model B is still in use - I have multiple Pi's running specific applications (network security, media centre, music play...

Read More

Installing Mopidy and pHAT Beat on a Raspberry Pi

linux raspberry pi mopidy phat beat 0 Comments

I've been running Mopidy for a few weeks now on a Raspberry Pi 3 Model A using a spare set of computer speakers. As I also have a spare Raspberry Pi Zero W, I decided to buy a HAT for this that would allow me to use a set of proper hi-fi speakers that were powered by the Pi instead of external power.

This article describes how to set up the Mopidy music server with selected extensions using the Pimoroni pHAT Beat. However, you could follow most of this guide to create a Mopidy music server using another model of Raspberry Pi via the built in audio chip and 3.5mm audio jack. In this case, just ignore the instructions for installing the pHAT Beat software and follow everything else.

Read More

Tools we use - 2019 edition

tools 9 Comments

Happy New Year! The past few months I've been feeling quite burned out and haven't updated this blog much - I have half a dozen half-finished blog posts and our product updates have suffered too. I didn't want to break the tradition though and fortunately the number of updates were small, so here is the 2019 list of "Tools We Use".

As far as personal goals go, 2019 was mostly a dud. I didn't resume game development, I'm still stuck with prioritising WebCopy to the detriment of everything else, and I still haven't tried anything really new. This nonsense needs to stop.

Read More

Resolving compile error "Interop type cannot be embedded. Use the applicable interface instead"

interop com 3 Comments

Recently I've been experimenting with the Microsoft Windows Image Acquisition Library (WIA), a COM library that therefore requires the use of interop in .NET. In the course of testing some of the different features of this library I triggered a compile error I haven't come across for a long time. As it isn't often I work with COM interop I thought I'd write a quick post detailing how to resolve or work around the compile errors to more firmly cement it in my head for the next time.

In older versions of .NET (or Visual Studio), when you referenced a COM library an interop DLL was generated - you could always tell these from their filenames as they would start with Interop.. I also seem to remember that back in the days of .NET 1.1 I would manually run a utility program to generate the interop DLL's, to avoid some form of naming prefix.

Read More

CanoScan LiDE 100 Windows 10 Compatibility

hardware canoscan windows-10 8 Comments

Although officially the Canon CanoScan LiDE 100 scanner is not supported on Windows 10, I have found that it is fully functional. This article describes the versions of Windows I have tested the scanner with along with any observations.

The drivers page for the Canon CanoScan LiDE 100 scanner states that the scanner is not supported in Windows 10 (either 32 or 64 bit). As far as Windows goes it is officially supported from Windows 2000 to Windows 8.1, and also on OS X 10.5 - 10.10.

Read More

Book Review: The Ray Tracer Challenge

review book testing ray-tracer 0 Comments

The Ray Tracer Challenge Book Cover

A few months ago I heard about a book named The Ray Tracer Challenge by Jamis Buck. The premise of the book is that it would teach you how to write a ray tracer from scratch. The unique approach of the book (and one I have never come across in any other book) is that it would do this via a test driven approach - the book would provide the test cases and their inputs and outputs, and you fill in the blanks in your language of choice.

Read More

Error VSP1048 when trying to instrument assembly created using Visual Studio 2019

visual studio csproj deterministic 0 Comments

In short - projects created using Visual Studio 2019 by default are compiled in a deterministic fashion, meaning if you compile the file multiple times without any changes, you will get identical output each time. Previous versions of Visual Studio used to include the compilation timestamp as part of the file header, causing the output to be different each time.

I'm not sure of the reasons why, but some of the tools provided with older versions of Visual Studio are unable to process assemblies compiled with this flag - they report them as not being valid image files and won't continue.

Read More