That’s it, I’ve started making tutorial-style videos 😉

I recently discovered GitHub Codespaces, and wow… instant crush.

GitHub Codespaces, the trigger

Being able to have a complete Linux environment in the cloud, accessible from a simple browser, is just amazing.

No complicated local installation, no exotic dependencies breaking everything, no more “it works on my machine”, everything is ready in seconds.

This opportunity made me want to create a tutorial explaining how to use my template to develop in C for the MO5.

In the video, I go through every step, environment setup, installing LWTOOLS and CMOC, compiling the base project, a simple program that asks for a first name and displays “hello” + the entered name, then modifying the project to switch to graphics mode and move a sprite.

Putting the script and SDK into practice

In my previous post, I talked about my script that generates a C structure from an image, as well as my SDK.

In this video, I put everything into practice, generating a .h file from an image, then using an SDK function capable of displaying the sprite directly from the generated data structure.

It works pretty well.

You can see the result here: https://youtu.be/R9TeEZwZZpI?si=GKu-M0gDR0ndn-D7

What I really like is the full workflow, developing in the cloud, generating a disk image for the MO5, testing everything in an emulator.

Ideally, I’d like to automatically chain the disk build with launching it in an online emulator. For now, I haven’t found an elegant solution yet, if you have any suggestions, I’m all ears 😉

The template keeps evolving

Since the video, I’ve slightly improved the template: https://github.com/thlg057/mo5_template

I added a setup-codespace target that automatically configures the Codespace environment, installing missing packages, LWTOOLS, and CMOC.

If you use the template in Codespaces, with three command lines you get a usable image for a MO5 or an emulator.

make setup-codespace configures the development environment

make install installs Olivier P’s tools to generate the .fd disk image + my MO5 SDK, including a script to convert a .fd file into .sd for use on a real MO5 with SDDRIVE

make compiles and generates the .fd and .sd files

The “ready-to-use” aspect is really starting to take shape.

SDK version management

I also updated my sprite sample: https://github.com/thlg057/mo5-sprite-for-dummy

I was in a tricky situation, I needed to evolve my SDK because I’m currently trying to write a small game, but I didn’t want those changes to be automatically used by the template or the sprite demo, as I could break compatibility.

So I introduced a versioning concept for the SDK.

At the beginning of the make, I defined a variable called SDK_COMPAT_VERSION. It allows the project to specify which SDK versions it is compatible with.

I now tag my versions in Git.

As a result, if someone uses a specific version of the template, even if they run make install to update dependencies, they won’t accidentally retrieve an incompatible SDK version.

It works quite well, and I have to admit I’m pretty proud of this first compatibility mechanism 😉

Changing AI tools

I’m going to cancel my Augment Code subscription.

I think I’ll switch to Claude.ai.
I found it particularly relevant, even in the free web version, when discussing the design of my SDK.

Next objective, get a Claude subscription and plug it into my MCP server so it becomes even more relevant for MO5 development.

It has already helped me better understand concepts like vertical synchronization, VBL for insiders, sprite optimization, RLE compression, and other subtleties related to the machine’s constraints.

In parallel, a small shoot’em up

I’m currently developing a small vertical shoot’em up for the MO5, which forces me to seriously dig into performance, display management, synchronization, and memory optimization topics.

At the same time, I’m updating the RAG server documentation with everything I learn.

It’s fascinating to rediscover low-level problems that we simply don’t see anymore in modern development.

The upcoming weekends are likely to be quite busy 😉