What's new (2022)

TGAVIEW and dithering doc

August 26th, 2022

I wrote something. It's in GAMES/TOOLS and loads TGA files at most 320 pixels wide and 200 pixels tall in Mode 13. The idea was to show how to load and display any TGA file, from 8-bit grayscale, to 8-bit indexed colors, and even direct colors in 16, 24 and 32 bits per pixel (RLE compression is also supported.) The program assumes the provided file is a valid TGA image and does very few checks before processing it, but it's a solid start.

The program doesn't quantize colors properly but offers three ways to display direct color images: gray (converts colors to grayscale,) uniform (converts colors to a uniform 8-bit per attribute palette,) and dither (starts with the uniform 8-bit palette then applies Floyd-Steinberg dithering on top.) I may expand on this thing because it was fun.

I also added a document to SPECS. called DHALF.TXT (for Digital Halftoning) written in 1989 by Lee Daniel Crocker and updated two years later by Paul Boulay and Mike Morra. It's about color reduction and dithering and is as interesting a read as it is long. If you want a more concise version with images, either try Tanner Helland's or Preet Shihn's articles.

The safeword of the day is: there's none. Nothing is safe today. Everything will try and take a bite off your icecream cone. They may pretend they're not after your icecream cone, but they're lying. Be the first to smack them across the face with an Italian poetry anthology. Trust no one. Love you - mom and dad.

America, FUCK YEAH!

July 10th, 2022

I looked into two file types found in American Laser Games, the company that produced FMV-based laser guns games in arcades and then ported them to IBM-compatible machines in the early 90s. The doc was added to the "SPECS" dropdown menu and covers LIB (archives) and MM (videos) files. I've been thinking a lot lately. It was scary and my head hurts. Should I just replace the "Resources Containers" article with proper file specifications, or should I, at the very least, include some QB code to demonstrate how to use resources containers in programs? Ooooh. Everything's spinning 'round and 'round again.

Tiny Tool: BSV2BMP

April 2nd, 2022

Following the "Tricks with GET and PUT" article update, I wrote a small tool to convert image buffers contained inside BSV files to standard 8-bit per pixel BMP files. It works with every mode QuickBASIC natively supports and can extract entire collections (when multiple images are stored contiguously in the BSV...) and that's it really.

New Game: Columns (a legally distinct version of "Obelisk")

March 29th, 2022

It's done, it's playable, it's Columns in QuickBASIC, and it's in the game section. I will probably have to go back to the drawing board with the custom library stuff: there's something neat going on in there and it'd be a shame if I didn't spend a little more time on it. I also added another large bit of code to the menu tutorial: it shows how to use pointers to access variables, which was part of the initial article, but it's much easier to understand now.

Legally distinct "Pillars"

March 28th, 2022

I rewrote the menu tutorial from scratch because it was a mess. I'm also almost done with a Columns rewrite (the puzzle game from Sega,) it should be uploaded soon. In the meantime, you can feast your eyes upon some screenshots here, here and here. It's also going to use PC Speakers because I suspect my terrible SoundBlaster programming skills are the reason why the other projects have a hard time running on proper hardware.

I wish I had time for a joke to conclude this post... so uh... let's ask the Internet. "What is blue and not heavy?" Light blue! Thanks, internet: your wit saved the day again. What would we be without you?

Productive.

That's what.

That other yearly update

March 6th, 2022

This place is a mess. It's dusty, covered in cobwebs and it smells like something died under the news section a while back. I bet it's a rat. It has to be a rat.

Anyway, I got two articles out for beginners/intermediate level QB programmers: the first one talks about a few techniques that can be used with the standard GET and PUT instructions, the second also uses GET and PUT but focuses on animating actors on the screen with a unified system (it also shows how to do timestepping so programs run at the same pace on every machine.) It's fairly long because the code is heavily commented and it's taking things one step at a time, slowly. Like my updates.

Ta-ta! As they say.