Subscribe to my space and sci-fi newsletter

When you sign up for my newsletter, you'll get a free sci-fi short story: Starfarer, monthly updates on space science and sci-fi, and updates on my writing projects!

    I won't send you spam or share your email with anyone. Unsubscribe at any time.


    Popular blog posts

  • Total Share: Personal Computer Market Share 1975-2010
  • Monarch Thing-A-Day Challenge!
  • Celebration
  • I love Korean Starcraft
  • Why HTML 5 sucks!
  • Recent forum posts

  • How to find the best fiction ghostwriter?
  • Jeremyreimer.com is live on a new server!
  • My Non-Fiction
  • How is Facebook's Metaverse doing? Worse than buggy, it's lonely, boring, and bleak
  • The History of the ARM chip: Part 3
  • Discussion Forum

    Discussion forum

    The most obscure video game ever made

    Blog post

    Author
    Message

    Jeremy Reimer
    Posts: 9343
    Posted on: 2022-10-26 17:14:51.000
    I'd like to tell you a story about the most obscure video game ever made. Only one person in the world has ever played it, and until now, only one person in the world has ever even seen it or heard about it. It's a game called Balablox, from 1987, and it ran on one of the most obscure computers ever, the Heathkit H-89. This one, in fact:



    I got this computer in 1979, when I was 7, and started making games in Microsoft BASIC. By 1987 I was 15, and eagerly awaiting my new Packard Bell PC/XT clone. But before I entered the PC age, I finished one final game on the Heathkit. It was loosely based on the short film Balablok, from the Canadian National Film Board or NFB. Here's the loading screen:



    You play a small square creature, running and jumping to get the key and escape each level, while being assaulted by monsters. It's a bit like Lode Runner, but the monsters have special attacks. Here's the first level:



    The game is slow (interpreted BASIC on a 2MHz Z80!) and hard, but you can beat all 15 levels. The H-89 buffers keystrokes, so you can hit left while falling from a jump and then hit space bar, and you will jump to the left once you hit the ground. Here, you're crossing a zipline.



    The game has a level editor, so anyone can make new levels. Of course, being 15, I had to include the Starship Enterprise. This is level 7. The key is on the front deflector dish. The diamond gives you the power to shoot up, destructively.



    Here, in level 8, a spider guards the entrance to the bottom lair. The spider web will stop your movement for a time, and other creatures might eat you. There are eight "invaders" in the middle, but only one will move. If you touch any of them, you die.



    Level 9 is the first really difficult "gating" level. You can't get to the key right away. You have to hope that the nastie shoots a fireball, clearing other level blocks and (temporarily) enemies so you can run to the right and jump up. But the blocker might block your path.



    I couldn't get past this level in 2021, but at least I got a high score. Note the hilarious high score entries from 1987.



    Let's look at the source code. DEFINT A-Z makes all variables integers, vital to get enough speed when running in interpreted BASIC. The command RANDOMIZE(PEEK(11)) seeds the randomizer with a bit from the system clock. All graphics are character graphics, since that's all the Heathkit supports. They are stored as strings. The map is a 20x12 grid (the screen is 80x24, and each block is 4x2). X$=INKEY$ reads the keyboard.



    The main game loop reads the keyboard and sets walking directions, updates enemies, webs, fireballs, plays a bell (CHR$(7)) when you hit a coin, and checks if you have finished the level. My uncle taught me about main game loops. They still exist today!



    Here I'm assigning all the graphic elements. The H-89's character graphics required entering a special mode using an escape sequence, which changed all the lowercase letters into symbols. DL$ is a string for down 1 and left 4 chars. Updating the screen is just a matter of printing strings, which makes it fast enough (barely) to have an action game using interpreted BASIC.



    Here I'm checking if the character is able to move in a given direction, or jump.



    Line 5000 updates the status screen on the 25th line. The emulator has a bug that scrolls the screen when you print anything on this line, but I patched the game (34 years later!) to work around it by adding a ; to the end of line 5020.



    Monsters have a 50% chance to do their special move and a 50% chance to move towards the player instead of randomly. I did zero tweaking for this. It just seemed to work.



    The game came with a level editor, which is happening at line 8000. Cheeky 15 year-old agnostic me is having fun with the comments.



    Line 9000 and on is computer-generated code, from a program called SKETCH that let you make a screen out of character graphics and save it as BASIC source code. I used it here to make the loading screen. Another command imported it into my code. I miss SKETCH. It was awesome.



    This code saves and loads level files and prints the main game menu, letting the player access the level editor or play any level directly.



    The hall of fame or high score screen. ON ERROR GOTO will make a new high score table with two entries called "NAMELESS, JR" if one doesn't exist.



    There's a simple nested loop sort routine to order the high score table. Not very efficient, but it gets the job done. And that's the end of the code!



    Apparently I started on a sequel, SUPER BALABLOX...



    It starts off with you falling in a deep pit, with all your old enemies dead and buried!



    And you end up facing an incredibly powerful dragon! And then the game just... ends. I never got any further. Never did beat that dragon. I started a couple of games on my new Packard Bell PC XT and the skeleton of one on my 386 (it had VGA!) but I never finished another game.



    Life happened, things got busy, technology got more complicated. I was no longer between the ages of 7 and 15. Never would be again.

    But you know what? Maybe I'll see if I can make a really simple fun game. Let's see what happens.



    Note: huge thanks go out to Mark Garlanger for his Heathkit H-89 emulator, which you can find at https://heathkit.garlanger.com/emulator/ Without this emulator, I could never have revisited my childhood. I still have my original H-89, but it died in 1990 and the company died as well. Mark recovered 95% of my old floppies!

    granville
    Posts: 1
    Posted on: 2021-04-07 23:50:51.000
    That is really tight artwork for 15!

    AllYorBaseRBelong2Us
    Posts: 10468
    Posted on: 2021-10-12 18:47:00.000
    Damn, even the Mighty AYB didn't know how awesome you are JR!!!

    :)

    Too bad about the heathkit. have you ever looked into getting it repaired? Its requires a pretty uncommon set of skills these days, but I know a lot of vintage collectors have become adept at capacitor replacement, etc.

    Jeremy Reimer
    Posts: 9343
    Posted on: 2021-10-31 04:59:54.000
    I looked into repairing the Heathkit, but it's difficult because so many of the parts simply aren't made any more.

    I do have an idea for putting a small form-factor computer and monitor into the guts of the Heathkit, hooking up the keyboard, etc, and basically making it an emulation machine inside the actual machine. But that's probably a project for when I'm retired...

    Posts: 5
    Posted on: 2023-09-04 18:44:18.000
    Jeremy,

    Would you be willing/able to provide the BASIC source? Level data/files?

    I'd love to try to convert this game to another 8-bit computer and allow others to play it using an online emulator.

    Jim G

    Jeremy Reimer
    Posts: 9343
    Posted on: 2023-09-09 23:34:46.000
    Hi Jim!

    I could totally do that. It might take a little while, because I'll have to list the program and re-type it out by hand from the emulator. I'll post a new blog post with links when it's ready.


    Views: 8901