AMOS Pro BSD Socket Extension 1.1.1 Released

March 17, 2024

I’ve released version 1.1.1 of my BSD Socket extension for AMOS Professional. It fixes two bugs in Socket Inet Ntoa$, a crash bug and an issue where the null terminator in the original string was being copied into the AMOS string, causing issues. There was also an issue with the build script where the latest version of the library was appearing in the wrong place in the archive.

Grab it from Hackerbun Gitea or Aminet:

DOS Arena Game -- Super Alpha Version

March 5, 2024

I put up the code and binary for a Smash TV/Robotron-like game I built for DOS and PCs with VGA graphics. It works well enough to be playable.

The code is up on Hackerbun Gitea. It has a bunch of code related to working with the PC and VGA card, and it’s the biggest program I’ve written in C so far. It also has unit tests using CuTest, inline assembler, and compiled sprites built using Ruby.

Take it for a spin if you like. Downloadable files are in the project’s Releases. If you have feedback, send it along. I’m not sure when I’ll get back to working on it because I have a video idea I want to do next, but who knows what the future will bring!

AMOS Pro BSD Socket Extension 1.1.0 Released

February 24, 2024

I’ve released version 1.1.0 of my BSD Socket extension for AMOS Professional. It fixes a bug in Dns Get Host Address By Name$ where I was incorrectly handling string termination from AMOS strings. It also adds Socket Herrno to get error code information from the DNS resolver in the network stack.

Thanks to Allanon on Mastodon for finding the issue and testing out the fix!

Grab it from Hackerbun Gitea or Aminet:

Viewing Amiga images on a DOS PC without conversion? Let's find out how!

February 4, 2024

Young Topaz has an IFF ILBM image he wants to show his dad, but his dad’s on his PC. Learn about what it takes to write a simple IFF ILBM reader for DOS.

References

Source Code

IFF Files

PC Development

Credits

Music

Sound Effects

Hop to the Top: Bunny's Revenge and IFF ILBM files

October 30, 2023

RobSmithDev released Hop to the Top: Bunny’s Revenge and posted a video about some of the production process. I did some of the graphics for the game, as well as writing the code for the intro. For the graphics, I ended up writing some custom code to automate some of the process, and it was an opportunity to learn about a popular Amiga image format.

My typical process for making art for retro systems is:

  • draw the piece in Krita and export as true color PNG
  • use GNU Image Manipulation Program to convert it to an indexed PNG, cleaning up the pixel art as needed in GIMP
  • use some tool somewhere to turn the indexed PNG into a retro machine friendly format

In the case of the Amiga, I’ve used ArtPRO on the Amiga in the past to convert PNG images to whatever format I needed. With all the art I was making, and potentially remaking, I needed a faster process. ArtPRO is good, but clicking buttons on retro machine software to convert images was going to be too slow.

I was also running into an issue with GIMP not preserving the index order of the color map I had created for the game. I think I had Remove Unused and Duplicate Colors from Colormap enabled which was messing up the color indexes, so be sure to disable that if you’re using a similar process.

Due to this, the resulting color map on the output images was all over the place, so I needed to fix that issue.

I had two approaches I could take:

  • automate the production of a sprite sheet encompassing all of the individual pieces of art and convert it once, fixing the palette issue.
  • convert each piece separately and load them as separate images, finding some other way to speed up the conversion & palette fix.

I chose the latter since I preferred separate image banks to start, over hard-wiring in sprite sheet locations, during initial development.

I decided to write a tool in Ruby that converts indexed color PNG images directly to IFF Interleaved Bitmap (ILBM) files, enforcing the order of the palette. It uses RMagick to load the image, and then implements IFF ILBM writer code to create the Amiga-ready files. It even supports run length encoding compression.

Here’s the source code. It drew heavily from the IFF ILBM reference found here, as well as from a lot of examining IFF ILBM files in hex editors. It only supports images up to 32 colors, so no Extra Half Brite or HAM images. If you end up using it, let me know!