Advances in the MSX game

(MSX Game Series, part 2. Original in Spanish HERE)

The “game” has turned into an “Engine”!

Instead of hardcoding the levels and scenes of the game, I made it adaptable where the game is written in an easy and interpretative language, and the game engine will execute the trans-coded game in bitcode (machine code). Here’s some infographics I did for the game then:

The GAME!
(I was going to make something simple, but instead I accidentally made A R T . . . chef’s kiss Beautiful! This is going to the back-cover of the future cartridge box ¯\_(ツ)_/¯ )

The next step was to add the Start Screen. Something provisional, but allowing the game to start the sequence of scenarios, also check the VRAM status. Also, I improved text printing, adding line-breaks between words and not between characters.

Next is to implement the functionality to run sequences (game levels) one after the other, and let automatic level succession.

Control of Sequences!

Aside, the “game compiler” (to encode descriptive language to bitcode) now includes an optimizer for bitcode placement in ROM, packing level’s code in fewer pages, reducing ROM size. Next step is optimize assets placement (images).

And last for today, I made a first attempt of splash image, using the mini-tile encoding used for backgrounds, creating a 500 Bytes image from a 12 KBytes of the original. now I’m trying to compress it even more.

Front Page! (I can’t COLOR)

And up to here today’s updates on the game development. More in the next weeks.

Farewell!

Creating a game for MSX

(MSX Game Series, part 1. Original in Spanish HERE)

Since some time ago I had in mind to create a game for MSX machines. Obviously a game with “funny cartoon animals”, this is, “furries”. And after more than 90 days in lock-down (around June 2020), I decided to learn the architecture of those old computer, and now things started to work.

(Note: I’m dumping here what I published then in Twitter, for keeping record of this, out of the whirlwind of sh*tposts on that social network.)

“Concept Art” in January 2020

Everything started in the last meeting of the Reunión de Usuarios de MSX (RUMSX, January 2020), where I met incredible people developing games for that machine, that even being that machine old and having more years than myself, they still create content with those limited CPU, memory and sound resources. So I started creating a game too. From reference manuals, the first thing was to create a “core library” with standard functions in Assembly and C, and from there build the game. Just to mention that @PresidentFubu was also behind this, providing me examples and links of MSX stuff.

Here some examples of character creation, using a 16 color palette, with 4 bit per pixel in “Screen 5” mode (aka “Graphics 4”). I only have 32KBytes to store code, assets and music, so images must be compressed as “tiles”, although screen mode 5 is bitmap oriented. All saved tiles must be uncompressed as BMP in RAM to be copied into Video RAM (VRAM).

First advance: Toying with VRAM I can already upload encoded images as tiles, occupying less ROM space but using CPU time to expand in RAM and upload to VRAM. For this, I had to do tests on data moving ROM – RAM, ensemble the images, then copy to VRAM. All using extensions of the core library, also optimized tile functions and a memory heap.

Second advance: Putting background scenarios, that will be larger than character BMPs, but can be simpler. For the one in example, 3 different tiles are used, each one with 1 color + transparency, simplifying the number of bits for encoding the full image. Also, Huffman compression and symmetry can be used, and the here shown background uses 150 Bytes instead of 450 Bytes for the BitMap file.

Asside, I’m creating more characters. Here I intended to create a chinchilla, but I got a hamster instead… I’m trying different color patterns for the characters, making her clearly different from the other characters.

Versions of the same character with different palettes

Third advance: I’ve been busy trying to expand the core library to use a third page from ROM (+16KB), and now the ROM allows 48KB, where I can use a full 16KB page for images and sound!

I’ll be updating with more stuff as the development advances.

Farewell!