Home
Website homepage.

Understanding Spacial Locality of Reference - Articles
Simply changing the order in which you loop when accessing memory can lead to a performance gain. The difference comes from the way you access contiguous memory in the loop. By reading memory that is sequential, memory access is faster. This article explains why.

About TopHat Stuff - Static
TopHat Stuff is the trading name of a tiny hobbyist independent games and software development studio in the UK.

Play Online: Xordio, the musical game of reflexes - Downloads
Xordio, the musical game of reflexes. Play online: Xordio is a browser-based HTML5 game where you must hit the correct note within the time limit to play the music and get a massive high score!

Circular Buffer C Implementation - Manuals
A circular buffer or ring buffer is a fixed-size data structure that wraps from end to end. It is ideal for buffering keyboard input or streaming data, like real-time sound or video, where old data is unimportant. C source code included.

Hero Extant: The Alvissmal Kingdoms - Static
Hero Extant: The Alvissmal Kingdoms is a free, open-source computer role playing game (cRPG) set in a unique fantasy world.

Projects - Static
Quick access to our projects in development and finished game downloads.

Free Download: Christmas Jigsaw - Downloads
This Christmas, play Christmas Jigsaw! A free game download, suitable for all ages.

Introducing the MCC Modular C Collection - Manuals
Introducing the MCC Modular C Collection: an open source selection of clean, unobtrusive, portable and modular includes for the C programming language.

Poxml.c - Plain Old XML Parser for C - Manuals
Poxml is a fast, light and open source library that can parse "plain old XML" for the C Programming Language.

ReplaceString.c - Manuals
A function to replace any string (needle) with a string (replacement) within a string (haystack), with the C programming language.

Realtime SVG Engine Techdemo - Manuals
A tech demo for a real-time Scalable Vector Graphics (SVG) engine for the Cobra programming language.

Algorithm to Draw a Line of Arbitrary Thickness - Manuals
By modifying Bresenham's line algorithm to plot rectangles instead of pixels, it is possible to draw lines of any thickness.

Extract Coordinates from a String - Manuals
Given a string, I needed to extract the coordinate point-pairs. I wrote a simple parser to do this. Source code provided.

Portfolio - Ben Golightly - Static
Portfolio of Ben Golightly

Poxml - Plain Old XML Parser - Manuals
Poxml is an open source library that can parse "plain old XML" for the Cobra Programming Language (also ported to C).

Hero Extant RSS feed and subreddit - Downloads
Just a note to say that new Hero Extant updates will be posted to /r/hex/. You can get this feed as RSS.

To-do - Hero Extant - Static
Planned features and fixes for the next release of Hero Extant.

Hero Extant: World Generator - Downloads
This world generator uses fractal terrains and various simulations to generate highly detailed random map data. It is open-source and licensed under the GNU General Public License v3, with some sections also available under the MIT license.

Optimal Compression for Binary Data - Articles
How I managed to compress a 5mb map into just 36kb with two simple techniques.

Dev. Diary - Hero Extant - Articles
Hero Extant (literally "a hero exists") is a computer game that at the moment only exists in my head. It's very much inspired by Dwarf Fortress though, particularly adventure mode.

Fast text-wrapping in Cobra - Manuals
A fast implementation of text-wrapping for the Cobra programming language

Lexini - ini file parser - Manuals
Lexini is an open source library that can parse .ini files for the Cobra Programming Language.

vm Virtual Machine and Assembler - Manuals
An open source Virtual Machine and Assembler for the Cobra programming language.

Random World Generation with Fractal Terrain - Downloads
Short video demonstrating the stages of creating a random world. After creating a random fractal heightmap, temperature bands are generated, wind and rain is simulated (including realistic "rain shadows" caused by mountains) and rivers flow.

Changelog - Hero Extant - Static
List of recent updates to Hero Extant, a work-in-progress fantasy world simulator and adventure game inspired by Dwarf Fortress.

CreateButton - Hag GUI for Cobra - Static
Function CreateButton(frm:^forms, x:Integer, y:Integer, w:Integer, txt:String, [tooltip:String='']) : ^buttons

A-star Pathfinder - Example Cobra Code - Manuals
An example implementation of the A* pathfinding algorithm (also known as the A* search algorithm) for the Cobra programming language.

FreeForm - Main Functions - Hag GUI for Cobra - Static
Procedure FreeForm(frm:^forms)

ShowForm - Main Functions - Hag GUI for Cobra - Static
Procedure ShowForm(frm: ^forms, [show:Boolean=TRUE])

EnableForm - Main Functions - Hag GUI for Cobra - Static
Procedure EnableForm(frm: ^forms, [enable:Boolean=TRUE], [allChildren:Boolean=FALSE])

PositionForm - Main Functions - Hag GUI for Cobra - Static
Procedure PositionForm(frm :^forms, x:Integer, y:Integer)

CreateChildForm - Main Functions - Hag GUI for Cobra - Static
Function CreateChildForm(frm: ^forms, [name:String='Untitled']) : ^forms

CreateForm - Main Functions - Hag GUI for Cobra - Static
Function CreateForm([name:String='Untitled']) : ^forms

Text Boxes - Elements - Hag GUI for Cobra - Static
Textboxes are rectangular elements used for string entry. All Hag text boxes are rich text (each character can be fully styled).

Text - Elements - Hag GUI for Cobra - Static
Text elements are individually styled blocks of text, supporting word-wrapping, line breaks, tooltips and hyperlinks.

Tabs - Elements - Hag GUI for Cobra - Static
Tabs allow the user to switch between several forms, making good use of screen space. Each tab belongs to a Tab Group, and only one tab can be selected per group at any one time.

Sliders - Elements - Hag GUI for Cobra - Static
Sliders allow the user to set a value by moving an indicator. Sliders may optionally have divisions which allow only a finite amount of values.

Scrollbars - Elements - Hag GUI for Cobra - Static
Scrollbars allow the user to scroll the display through items that do not fit into a viewport or window.

Radio Buttons - Elements - Hag GUI for Cobra - Static
Radio buttons are small GUI elements belonging to a Radio Group. Only one radio button per group can be selected at any one time.

Progress Bars - Elements - Hag GUI for Cobra - Static
This page will not be visible until you adjust the value of the flags field.

List Boxes - Elements - Hag GUI for Cobra - Static
List boxes are large rectangular elements containing a list of options. As options can extend beyond the height of the box, Hag list box elements automatically create and manage a scrollbar element. Each option can be individually styled or disabled.

Frames - Elements - Hag GUI for Cobra - Static
Frames are purely decorative GUI elements used to visually group other elements.

Drop-down Boxes - Elements - Hag GUI for Cobra - Static
Drop-down Boxes are rectangular GUI elements that, when inactive, display a single value. When activated, it displays (drops down) a list of values, from which the user may select one.

Checkboxes - Elements - Hag GUI for Cobra - Static
Checkboxes are small GUI elements that, when clicked, toggle between being checked and unchecked.

Canvases - Elements - Hag GUI for Cobra - Static
Canvases are basic GUI elements that you can draw to. In essence, an ordinary Cobra sprite that integrates well with other hag GUI elements.

Buttons - Elements - Hag GUI for Cobra - Static
Buttons are rectangular GUI elements that, when clicked, perform an action.

Forms - Elements - Hag GUI for Cobra - Static
Forms are invisible elements that you parent other elements to. This makes it easy to move, enable, show, hide, free, etc, several elements at the same time.

HagFreeAll - Main Functions - Hag GUI for Cobra - Static
Procedure HagFreeAll()

HagFreeForms - Main Functions - Hag GUI for Cobra - Static
Procedure: HagFreeForms()

HagFreeTileCache - Main Functions - Hag GUI for Cobra - Static
Procedure HagFreeTileCache()

HagUpdate... - Main Functions - Hag GUI for Cobra - Static
Procedures: HagUpdateOnce, HagUpdateAll_AutoKeys, HagUpdateAll

HagFreeGuiTheme - Main Functions - Hag GUI for Cobra - Static
Procedure HagFreeGuiTheme()

HagLoadGuiTheme - Main Functions - Hag GUI for Cobra - Static
Procedure HagLoadGuiTheme(themeName: String)

HagEnable... - Main Functions - Hag GUI for Cobra - Static
Procedures: HagEnableAAliasing, HagEnableDebugLog, HagEnableErrorLog, HagEnablePerfLog, HagEnableTileCache

HagInit - Main Functions - Hag GUI for Cobra - Static
Procedure HagInit(screenw: Integer, screenh: Integer, index: Integer=0)

HagBaseDir - Main Functions - Hag GUI for Cobra - Static
Procedure HagBaseDir(directory: String)

Free Download: DesktopNotepad - Downloads
DesktopNotepad is a handy notepad that sits on your Windows desktop. Not only that, DesktopNotepad is full of extra features!

Free Download: XP GUI Theme Images - Downloads
A collection of small images that can be put together to emulate a Windows XP-style GUI.

Logging - Topics - Hag GUI for Cobra - Static
Hag can keep three kinds of logs to make it easier to diagnose problems.

Packaging - Topics - Hag GUI for Cobra - Static
To redistribute a program that uses the Hag GUI, you will need to also include the "hag" directory that contains any themes that you are using. You can freely remove the Theme Compiler or any unused themes.

Exported Variables - Topics - Hag GUI for Cobra - Static
Hag exports the following variables:

Exported Constants - Topics - Hag GUI for Cobra - Static
Hag exports the following constants:

Creating Themes - Topics - Hag GUI for Cobra - Static
Hag themes consist of a folder containing a compiled theme file and several images that are used to draw a complete GUI element.

Cursor Hints - Topics - Hag GUI for Cobra - Static
The mouse cursor will change state when you hover over a textbox to a text cursor, and when you hover over a hyperlink to a hand cursor.

GIMP Tutorial: Photo Presentation - Articles
Learn how to quickly present a photo with GIMP, a free image editor.

Tooltips - Topics - Hag Gui for Cobra - Static
When you create a hag gui element, there is often an optional tooltip parameter that you can specify.

Install - Hag GUI for Cobra - Static
Installing the Hag GUI for Cobra.

Known Issues - Hag GUI for Cobra - Static
Known issues with the current release of Hag.

License - Hag GUI for Cobra - Static
Hag GUI is provided under the MIT license.

Change Log - Hag GUI for Cobra - Static
List of changes to the Hag GUI library for Cobra over time.

Hag GUI screenshots - Static
Screenshots of the Hag GUI in action. Hag is an open source unit for the Cobra programming language, providing a powerful GUI for the pure2d, cobra2d and cobra3d modules of Cobra.

Manual: Hag GUI for Cobra - Manuals
Hag is an open source unit for the Cobra programming language, providing a powerful GUI for the pure2d, cobra2d and cobra3d modules of Cobra.

MIT License FAQ - Static
Frequently Asked Questions about the MIT License

Manual: hlog for Cobra - Manuals
A fast, powerful logging library for the Cobra programming language

Manual: Basilisk for Cobra - Manuals
The Basilisk for Cobra Library is an open-source unit for the Cobra programming language, providing functionality for 'Virtual Variables', loading data from external text files, functions to aid with scripting, and other useful commands.

WriteShortcut - Lnk for Cobra - Static
Function WriteShortcut(lnk :^lnks) : Boolean

CreateShortcut - Lnk for Cobra - Static
Function CreateShortcut(lnkpath:String, volume: Integer, volume_type: Integer) : ^lnks

ReadShortcut - Lnk for Cobra - Static
Function ReadShortcut(lnkpath:String, [debug:Boolean=FALSE]) :^lnks

Exported Constants - Lnk for Cobra - Static
The lnk unit exports the following constants.

The Lnk Type - Lnk for Cobra - Static
The lnk record exposes the following variables.

Install - Lnk for Cobra - Static
How to install Lnk for Cobra

License - Lnk for Cobra - Static
Lnk is provided under the MIT license.

Change Log - Lnk for Cobra - Static
List of changes to the Lnk library for Cobra

Manual: Lnk for Cobra - Manuals
Read and write Windows .lnk shortcut files with this open-source library for the Cobra programming language.

Search - Static
Search this website

Reloaded Review: Crime Fighter - Articles
A blast from the past! In this review we revisit the DOS game Crime Fighter. Steal cars, raid banks, attack mail trains and wage gang warfare in this addictive freeware game.

Free Download: Nap Attack - Downloads
In this free game you must stop the nightmares from reaching your brain... by smoking!

Sitemaps - Static
Sitemap of all pages in this system. Available as plain text, html or as sitemaps.org Sitemap protocol XML.

Links - Static
A collection of links to other websites that you may find useful or entertaining.

Privacy Policy - Static
Your privacy is important to us. This privacy policy details what information is collected when you access this website and how it is used.

Contact Us - Static
If you have any questions or comments about the content of this website, please feel free to contact us.

Login - Static
Login to the system.

Section: Articles
The list of latest posts to the articles section.

Section: Code
The list of latest posts to the code section.

Section: Downloads
The list of latest posts to the downloads section.

Section: Static
The list of static posts.

Section: Manuals
The list of latest posts to the manuals section.

Section: News
The list of latest posts to the news section.