My latest video where I'm trying to program a game engine from scratch. #programming #agonlight #gamedev
My latest video where I'm trying to program a game engine from scratch. #programming #agonlight #gamedev
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
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.
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.
Unlocking the Agon Light: A Developer's Guide to C Programming under Linux
Dive into the world of C programming for the Agon Light and Console8 with our comprehensive guide. From setting up your development environment to leveraging powerful emulators, this article equips de...
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 https://github.com/Zeal8bit/Zeal-8-bit-OS/releases/tag/v0.5.0
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!
You can now install #T3X on your Agon Light 2 computer by just copying a disk image:
http://t3x.org/t3x/0/t3x0agon.zip
T3X is a simple and easy procedural programming language for #DOS, #CPM, and #Unix.
http://t3x.org/t3x/0/
You can try it online here:
http://t3x.org/t3x/demo/
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.
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.
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 https://ncot.uk/tilemap-game-engine-development-agon-light-c-programming/
#AgonLight #CProgramming #GameDesign #Programming
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!
Collaborating with TurBoss on this one - I can now telnet from my #AgonLight via the @olimex UEXT wifi module and straight across the internet to an #IRC server, which in turn has a bridge to Discord. That's right, we can talk Agon to PC or even Agon to Agon via IRC/Discord. #Discord and #Agon shots below. #retrocomputing
I've published the update to my #agonlight Infocom/z-machine adventure game player, Vezza, allowing you to select one of 9 built-in fonts to enjoy a more immersive gaming experience. You can get more details and download from here https://sijnstra.itch.io/vezza-agon - Shout out to Damien Guard for licensing some of his fonts for this purpose. #retrocomputing
Today's #retrocomputing has been working on the #AgonLight #fonts to find a good selection of distinct fonts that I could make available in an easy to use package primarily for #interactivefiction. While they don't support the accented characters, I'm pretty happy with the all-in-one binary I've built. I'll post some related IF/text adventure screenshots later. Thanks to @mrplado for his original code and @damieng for his excellent font selection!
Now that we have multiple modern retrocomputing systems, would it not be prudent to host a place where representatives from each project can post lessons learned developing each platform, so we can all learn from them going forward?
I've improved the #AgonLight implementation of Daniel Martin's #TRS-OS to make a more authentic #trs80 experience. The main thing I wanted to improve was the display capabilities. Steps taken (with thanks) to get the authentic output:
1. Obtain + fix the correct font
2. Load the font into #Agon
3. Modify the VDP to allow buffered fonts in Terminal mode
4. Modify the bootstrap and terminal host software to support the new code and use all 8 bits.
5. Check out before and after
#retrocomputing
Writing a game the hard way – from scratch using C – Part 2
Join me on a journey as I attempt to write a game for my Agon Light using nothing but raw C programming. In this second episode I figure out how to make a very basic 2D rigid body physics system work.
It doesn’t matter if you don’t have an Agon Light, I’m bringing you along for the ride. We’ll be looking at how games deal with the objects they manipulate, and how to detect and resolve collisions in 2D.
The code for my game library that I’m building is available on Github
https://github.com/ncot-tech/agon-template
This video contains an example of how I implemented a very basic 2D rigid body physics system with collision detection and resolution.
The 2D physics uses basic Euler Integration and Newton’s laws of motion, as explained in many places online. Here are a few resources I came across
It also makes use of fixed point maths since the eZ80 in the Agon Light that I am using does not have an FPU.
#AgonLight #CProgramming #Graphics #Programming
https://ncot.uk/?p=2179
Using the character to bitmap mapping available in the latest #AgonLight VDP firmware, I've been able to transform an ASCII #curses version of Flappy Bird into graphics. Double-buffering ensures the game plays flicker-free. Before and after images included. Source code and binary here: https://github.com/sijnstra/agdev-projects/tree/main/flagon #retrocomputing #retrogaming #zilog #ez80
Got my Agon Light 2 computer recently and installed CP/M on it (https://github.com/julian-rose/Agon-CPM2.2/tree/playpen). Great little machine, I am surprised how fast it is.
It self-compiles #T3X 16 times faster than a 4MHz Z80 (and clock speed is "only" 5 times faster). It even runs Evazor smoothly! I have added a CP/M binary to the Evazor archive in case you want to try it.
http://t3x.org/t3x/0/programs.html#evazor
#agonlight, #retrocomputing, #CPM, #eZ80