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.

Initial thoughts on the Adafruit I2S 3W Stereo Speaker Bonnet for Raspberry Pi

review raspberry pi 0 Comments

In my previous Argon ONE review, some of the photographs show a pair of white cables, one going into a USB slot and another the audio jack. These belong to a set of Logitech Z120 speakers I'd bought for use with things like the Raspberry Pi to avoid more plugs.

Unfortunately however, I swiftly discovered that these are not a very good fit for the Pi - when they are plugged in and switched on, there is constant feedback issuing from the speakers. I considered buying another pHAT BEAT but I decided that was overkill - I don't need hardware audio buttons nor a VU meter for a "desktop" Pi. But although that particular board was overkill, perhaps another board with less features would be suitable - the board would power the speakers so I could still ...

Read More

Committing to a Git repository using custom dates

git 0 Comments

Occasionally I want to create a Git repository for some ancient piece of code in my SVN repository. As I haven't had any luck in exporting parts of my giant mono repository, I tend to just grab the lowest folder, initialise a new git repository and commit. But if I do that, then everything is tagged with the current timestamp, which is definitely not what I want for code that I haven't touched in years.

Fortunately Git allows you to force the dates when you commit. Not so fortunately, the way of doing it isn't obvious (not to mention Git has two different date systems) and so whenever I want to do it, I've forgotten the specifics and need to look it up. This post serves as a reminder for myself rather than a more informative post for general use.

Read More

Adding Scripting to .NET Applications

c# scripting 3 Comments Downloads

Adding scripting to your application can be a good way of providing your power users with advanced control or for allowing it to be extended in ways you didn't anticipate.

Our Color Palette Editor software allows the use of dynamic templates via the use of the Liquid template language by Shopify. This is quite powerful in its own right and I will likely use it again in future for other templating activities. But as powerful as it is, it cannot replace scripting.

Read More

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 6 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