#AgonLight

2025-10-22

If you're into 8-bit programming and/or graphics you can get a whole range of Retro Jotters on Amazon. The most popular one is the ZX Spectrum one which I've linked here... amazon.co.uk/dp/B0C47JD15H Good luck with finding the others as the site search engine is absolutely useless. #zxspectrum #retrojotter #c64 #agonlight #amstradcpc #gamingbooks #gamedev #art #pixelart #puttycad

2025-10-14

Creating an Entity Component System for My Retro Video Game Engine
Welcome to the next edition of Gamedev The Hard Way, my attempt at #programming a game from scratch for the #AgonLight, using nothing but C. This time I throw away a ton of code and replace it with a shiny new Entity Component System.
ncot.uk/videos/creating-an-ent

Shawn Sijnstrasijnstra@hachyderm.io
2025-08-26

I wanted to use more graphics on my #AgonLight and the best project that came to mind was to display #Amstrad #CPC .pal/.scr images. Took a while to get there, and now it works including the same "wipe" effect that the original hardware had due to the unusual RAM layout. Planning to use this for landing pages to create the mood for any game you might load. You can see the source code + binary at github.com/sijnstra/agon-proje #z80 #ez80 #retrocomputing #retrogaming video shows loader image from Stefan Vogt's Ghosts of Blackwood Manor.

2025-08-11

Writing a Roguelike in C Part 1
Let’s try to write a Roguelike game in C for the #AgonLight. This is the first video. I explore how the original Rogue and similar games like Nethack generate their own dungeons, then adapt code that draws mazes so my dungeons are a bit more interesting to explore.
ncot.uk/videos/writing-a-rogue

2025-08-11

A Retro Game Made With 21st Century Thinking Gamedev the Hard Way
In this abridged video, I walk you through the process of building a text adventure game from scratch on the #AgonLight. Rather than a deep dive into every line of code, this video focuses on explaining the overall structure and design choices behind the project.
ncot.uk/videos/a-retro-game-ma

2025-08-04

Initial release of github.com/triplefox/agon-vdpt

VDPTypes is a Python library that assists in generating VDU protocol data for the Agon computing platform's VDP (Visual Display Processor). It supports Console8 as of version 2.12.0, minus some experimental API calls. Not all calls have yet been tested.

Contributions are appreciated, my bandwidth to work on Agon projects is limited.

VDPTypes is a support library made for customized build scripts, asset conversion, and development of VDP buffer programs. It includes:

* Utility code for loading and converting assets to VDP formats
* VDP-IL, an intermediate language for VDU commands using Python data structures, giving them some syntax and automatic checking
* Code generation for several language targets on Agon (unfinished)

#retrocomputing #agonlight #agon #console8 #python

Nils M HolmAverageDog
2025-06-28

The Mini I have been working on now runs on CP/M with 2416 free cons cells. Enough to load Ken Kahn's tiny PROLOG and run a few simple queries.
The (18MHz eZ80) loads the LISP part of the code (236 lines) in 11 seconds. Simple programs run at acceptable speed, but slightly more complex PROLOG queries take *minutes*. :)

MICRO COMMON LISP 01
2416 NODES

* (maplist #'reverse '(1 2 3 4 5))
((5 4321) (5432) (543) (54) (5))

* (do ((a '(hello beautiful lisp world) (cdr a)))
    ((null a) (terpri))
    (prin (car a)))

HELLO BEAUTIFUL LISP WORLD
T

* (defmacro kwote (x) *',x)
KWOTE

* (kwote (foo bar))
(FOO BAR)

* (load 'prolog)
T

* (defparameter *db*
    '(((man socrates))
     ((mortal (\\ x)) (man (\\ x)))))

* (prolog *db* '(mortal (\\ who)))

WHO = SOCRATES
NIL
2025-05-15

I started thinking of ideas for live musicmaking that would fit on #agonlight that combine the DJ stuff I've been tinkering with lately and some classic tracker elements:

1. DJ interface at top level - two spinning plates, a pattern sequence for both, automatic tempo and scale/root-note sync, configurable cue and loop points, a channel strip with 4 channels per plate, some volume controls and toggles.

2. Tracker interface to edit a plate. The plate defines patterns(all same length, variable size), you have sample controls and access to various things in Agon VDP's sound system, both synth patches and sample banks. Because the interface is designed for live mix the sequencing elements that need to be coordinated live are "suggestions" - hence there's no absolute pitch or BPM, just relationships that get remapped on the fly.

3. Then there is a "remix mode" - in "DJ mode" you can enable all 8 channels, but in "remix mode", you select a priority for each channel(either omit or allow one to overwrite the other, and where it's allocated), and you pre-select which samples will go into the new plate. Plates must have pattern lengths of same or 1:n ratio to be used in remix mode(no polyrhythmic remixing) - thus all plates remain constrained to the same structure and can be edited after, their cue points are saved and could be applied for algorithmic mixing, perhaps using a labelling structure to indicate usage.

All feasible stuff, it'd just take a while to develop and I have too many things going on. Maybe easier to prototype on PC first.

2025-04-21

My latest video where I'm trying to program a game engine from scratch. #programming #agonlight #gamedev

youtu.be/-_lKdUPViBk

2025-02-22

Stayed up late devising Forth code to stream in VDP calls with a 1k buffer (instead of loading all 160k of the file into the eZ80's available 512k) - it loads basically the same, just with less memory now #agonlight

2025-02-18

Sprites and tiles proof of concept for #AgonLight - it'll support multiple tileset layers of up to 256 tiles each, sprites are currently drawn using the bitmap features. My build system optimally crops them and creates offsets around an origin point. At present it is mostly agnostic to the code running on the ez80, I wrote some trivial Forth to read files of compiled VDP commands and dump them to UART.

#retrocomputing #retrogaming #gamedev

Some Python code(the build system) and the demo in an emulator window, showing some tile spam using OpenGameArt assets and some Megazeux-style smiley faces
2025-02-08

youtu.be/R0S8e3oWSas

The latest installment of my attempts at #programming a retro computer game for the #agonlight is out. This time I show my game's design and explain how I implemented a large multi-screen tilemap to roam about in.

Shawn Sijnstrasijnstra@hachyderm.io
2024-11-21

Pleased to have contributed to the new #ZealOS-8-bit release, version 0.5.0. For this one I will make a pre-built image for ease of use of #AgonLight so people can more easily try it out and contribute. In the meantime (or if you're using Zeal 8bit hardware!) you can grab the latest sources and build your own from github.com/Zeal8bit/Zeal-8-bit

Shawn Sijnstrasijnstra@hachyderm.io
2024-11-09

Working on making my telnet for #AgonLight more sane, it's a little better than it was but still has a lot of problems. It's hard to test something when the results depend on the network traffic flow at the time, and many components out of my control. Anyway, for a first time I did manage to get some almost readable data from @Wintermute_BBS RC BBS - thanks for having this running! It feels awesome having an #ez80 talking to a #z80 on the other side of the world!

Nils M HolmAverageDog
2024-10-26

You can now install on your Agon Light 2 computer by just copying a disk image:
t3x.org/t3x/0/t3x0agon.zip

T3X is a simple and easy procedural programming language for , , and .
t3x.org/t3x/0/
You can try it online here:
t3x.org/t3x/demo/

, , , ,

An Agon Light 2 single board computer with a USB2, VGA, and USB3 connector attached
2024-10-24

🧑‍💻Tilemap Game Engine Development – Agon Light C Programming💾
In this video, I’ll show you how I built a tilemap system from scratch in C for the Agon Light, and integrated it into my existing game engine. Getting the physics engine to handle collisions with the tilemap was no easy task, but I’ll walk you through how I made it work. On to
Read More 👉ncot.uk/tilemap-game-engine-de
#AgonLight #CProgramming #GameDesign #Programming

2024-10-24

Tilemap Game Engine Development – Agon Light C Programming

In this video, I’ll show you how I built a tilemap system from scratch in C for the Agon Light, and integrated it into my existing game engine. Getting the physics engine to handle collisions with the tilemap was no easy task, but I’ll walk you through how I made it work. On top of that, I explore some game design, sketching out ideas for where the game is heading.

https://youtu.be/qKVcIFhsZY0

Last time I made a basic physics engine that could cope with collisions against different physics bodies. This time I’ve been adding the ability to have a level that is made from tiles, some of which are solid.

Making a tilemap for a game is a traditional way to represent the game’s background and scenery. Testing for collisions with tiles is quite an easy thing to do, but does require more care when a physics library is involved. Normally the sprites simply look up their position in the tilemap and if there’s a solid tile under them, the sprite system moves the sprite to the closest edge before drawing it.

With a physics engine the physics system also needs to know about the tilemap. However what I didn’t want to do was tightly couple the sprite system, physics system and tilemap system together. What I chose to do was make the sprite system in control of everything, and it works out when to call the physics code, or when to move the sprites out of collision with the tilemap.

After a few false starts that did have some amusing bugs I managed to make it work.

This is one of those programming challenges that seems impossible to achieve, and for a while I did wonder whether I’d created a mess that I couldn’t solve. However with some careful redesigning of the code I made it all work in a very satisfying manner.

To save a lot of time and effort I used the tile editing tool Tiled which exports its data as easy to read XML files

By reading this in with some custom Python code, I was able to create my own map data file format for reading into the game

The remaining task was to test it on the hardware. Unfortunately this is where I encountered several showstopping bugs to do with loading graphics which needed solving

and then a severe performance issue which lead me down the path of dirty rectangle optimisation.

By the end I had a robust and reasonably performant sprite system that had physics and a tilemap.

Now I have the majority of the basic game engine working, I can focus on designing an actual game, and then starting to make parts of it. It’s still a complete work in progress and I am sure things will continue to evolve over time.

#AgonLight #CProgramming #GameDesign #Programming

ncot.uk/?p=2237

Shawn Sijnstrasijnstra@hachyderm.io
2024-10-20

Continuing to build on my #AgonLight Telnet using the @olimex UEXT wifi module, I can now #telnet to a number of #BBS services over the internet and use my font of choice while doing it. There's still a bit to go, but I wouldn't have gotten here without all of the cool features @stevesims keeps adding to the Agon VDP, and of course Nihirash who came up with a native #Gopher browser, as well as those who continue to run BBS's. Shoulders of giants in #retrocomputing - it really is a team sport!

mtrek.com screen shottelehack.comfreechess.orgfrugalbbs.org

Client Info

Server: https://mastodon.social
Version: 2025.07
Repository: https://github.com/cyevgeniy/lmst