We’ll wrap up our tour by looking more closely at the MSX1 system. The general structure here will be the same as the SG-1000 and the ColecoVision: we’ll look at all the parts of the system that we need to interface with in order to create the platform layer for our little shooting gallery program, […]| Bumbershoot Software
Last week’s article wrote a port of my little shooting gallery Rosetta Stone program to the SG-1000, then abstracted a more portable core that could power versions on the ColecoVision and the MSX. I glossed over the details of the actual ports, though, and the SG-1000-specific parts were largely covered in a previous post. This […]| Bumbershoot Software
Now that I’ve created a support structure for the SG-1000 with rough parity to the basics of the ColecoVision and MSX BIOS ROMs, I’m in a position to take on the first of the projects t…| Bumbershoot Software
Visit wp.com/app, or scan the code with your mobile device| bumbershootsoft.wordpress.com
Visit wp.com/app, or scan the code with your mobile device| bumbershootsoft.wordpress.com
2 posts published by Michael Martin during August 2025| Bumbershoot Software
It’s a busy month around here; we’ve had CAX a few weeks ago, Vintage Computer Fair West last week, and as this post goes live, MagWest is in progress. Of those, VCF West is the most relevant to what I do on the blog, and I did manage to attend this year. There was a […]| Bumbershoot Software
Last week I introduced three systems whose hardware was very similar to one another and also relied on chips first introduced to the market by the more ill-fated TI-99/4A. In order to get a better …| Bumbershoot Software
Before moving on to tackle the implementation of the next part of Mandala Checkers, I did a quick review of my initialization and display code to comment it more thoroughly and to see where I could…| Bumbershoot Software
I’d mentioned in the previous post that I’d now written “a program” for each of the machines I’d grown up with. This is an interesting proposition because the notion o…| Bumbershoot Software
1 post published by Michael Martin during January 2021| Bumbershoot Software
Visit wp.com/app, or scan the code with your mobile device| bumbershootsoft.wordpress.com
The wallpaper program last time was just a warm-up. In this post I’ll kick off my intended rescue project. This program was published in 51 Game Programs for the Timex 1000 and 1500 as two ve…| Bumbershoot Software
Last time, we had managed to create a cartridge that ran the startup and initialization code, but did nothing else. Let’s get a real message up: If that font looks familiar, it’s becaus…| Bumbershoot Software
The Spectrum is a new platform for me, and that means that as is traditional, I’ve ported Lights-Out to it. The final tape file weighs in at 1,050 bytes, which is the largest 8-bit implementa…| Bumbershoot Software
2 posts published by Michael Martin during November 2020| Bumbershoot Software
Last year I outlined the math required to provide a consistent aspect-corrected image using OpenGL and Cairo under GTK3. I’ve been working on mastering the SDL 2 library lately—I’…| Bumbershoot Software
1 post published by Michael Martin during April 2020| Bumbershoot Software
Once I moved beyond the 6502, I ended up porting a 16-bit PRNG from 16-bit x86 to provide me with a decent source of randomness for my projects. After that, in one of my nonretrocoding endeavours, …| Bumbershoot Software
1 post published by Michael Martin during March 2020| Bumbershoot Software
This blog is mostly about my interest in how older machines were programmed, the quirks of those machines, and how those quirks were worked around or exploited. A secondary interest, however, is in…| Bumbershoot Software
Most of the writing on this blog is code walkthroughs of small programs. Some of them are extremely basic proof-of-concept programs that don’t do anything other than demonstrate some techniqu…| Bumbershoot Software
Most of what I do at Bumbershoot Software involves writing software in unusual ways, or for very old machines. In most cases, if I’m targeting a retro platform, the programs that I end up wri…| Bumbershoot Software
Last time, we dug into the binaries of a classic mac C program to determine what was imposing an OS requirement of System 4. This time, we’ll build upon that to work out what is imposing a ha…| Bumbershoot Software
Last time we got a C toolchain working on RISC OS on a Raspberry Pi 3. That worked, but it also produced a Hello World that was 3 whole kilobytes. That’s awfully excessive for the kinds of pr…| Bumbershoot Software
When last we looked at the Atari ST, we had drawn an outline of the image from Portrait of Liberty. Today we’ll be trying to fill in the shapes as quickly as possible: We’ll start with …| Bumbershoot Software
Wikipedia articles: CoCo, Dragon 32 and 64 Last Updated: 9 Mar 2024 Online Resources TRS-80 Color Computer Archive The Dragon Archive (World of Dragon) 6809.org.uk’s Dragon Computers Page, wh…| Bumbershoot Software
Last time, I put together a couple of programs that would draw Mandelbrot set images, and then put together some parameters for them that got some zoomed images I really liked. I created the images…| Bumbershoot Software
My series of TI-99/4A posts earlier this year turned out to be surprisingly popular, but I had really originally intended it as a stepping stone: its graphics and sound chips were extremely influential and either were directly included in many later systems or significantly inspired their designs. That influence runs very late: despite being introduced […]| Bumbershoot Software
This week I’m wrapping up my revisit of my Sega Genesis port of the Cyclic Cellular Automaton. There’s a fairly large grab bag of remaining tasks: The logo screen should fade out gradua…| Bumbershoot Software
Wikipedia Article: TI-99/4A Last updated: 8 Mar 2025 Texas Instruments entered the home computer market in 1979, the same year Atari did. A series of unwise-at-the-time business decisions, however,…| Bumbershoot Software
A while back I encountered LackAttack’s attempts to speedrun Jaleco’s 1985 game City Connection. Two things immediately jumped out at me: first, that City Connection was a pretty terrib…| Bumbershoot Software
Continuing on from last week’s post, this time we will be actually creating a full implementation of the Cyclic Cellular Automaton on the SNES. We will rely very heavily on our check_cell mac…| Bumbershoot Software
Last week I created a new set of logo and font graphics for my old Sega Genesis project. These were much larger than the original graphics I used, so I ran it through the LZ4 compression algorithm to get the size down to a more comfortable level. Now we need to get those graphics on […]| Bumbershoot Software
With last week’s adventures done, we’d revisited and re-optimized some Sega Genesis code to bring its performance up to par with the SNES. While we’re at it, the rest of the CCA program is not really up to par. To get that part to catch up, we face three main tasks: Except for the dedicated […]| Bumbershoot Software
When I poked at developing for the SNES a year and a half ago, the capstone project was the same as it was for my much earlier Sega Genesis project: an implementation of the Cyclic Cellular Automat…| Bumbershoot Software
After a couple of weeks of ZX81 work, let’s jump ten years forward in time and port Bill Gosper’s Smoking Clover effect to DOS and VGA. Basically every description I’ve seen of th…| Bumbershoot Software
I’ve kind of been neglecting my Commodore stuff lately. That said, even though I haven’t done much new, I’ve finished cleaning up and commenting some of the earliest C64 code I wr…| Bumbershoot Software
After getting the ZX Spectrum port of Lights-Out to a place where I was happy with it, I turned to the Commodore 64 version. This was the very first platform I wrote Lights-Out for, and the initial…| Bumbershoot Software
Wikipedia article: Amiga Last updated: 28 Dec 2024 Online Resources Amiga Forever. Cloanto’s site for emulation products. Hyperion Entertainment. Develops, maintains, and distributes the Amig…| Bumbershoot Software
Last week we set up a rendering and game-state system that should see us through even to the more sophisticated versions of the shooting gallery game we’re writing. For now, though, it’…| Bumbershoot Software
Now that we’ve gotten the Amiga 500’s sprite system to display anything at all, the next step is to use these capabilities alongside the ones we’ve already mastered to actually do…| Bumbershoot Software
Having finished with the Atari phases of the project, it’s time to return to the Amiga 500. These three systems are all very closely connected; a man named Jay Miner led the design of the gra…| Bumbershoot Software
Today we’ll finish up the Atari 800 shooting gallery project. Unlike the Atari 2600 case, where adding multiple simultaneous shots took us a month of updates and experimentation, the Atari 80…| Bumbershoot Software
We have our console. We have our toolchain. We have our stock init code. We have our graphics. It’s time to start writing the application itself. Before we dive into the code, though, we shou…| Bumbershoot Software
I belong that that somewhat narrow cohort that straddles Generation X and the Millenials—we grew up with the microcomputer omnipresent but we remember a time before The Internet. The cohort has got…| Bumbershoot Software
6 posts published by Michael Martin during March 2018| Bumbershoot Software
The last post covered Flexible Line Distance, a technique that the VIC-II wasn’t really intended to support, but did anyway. If you look at the chip’s mechanism for generating text disp…| Bumbershoot Software
2 posts published by Michael Martin during March 2016| Bumbershoot Software
I’ll wrap up my little tour of retro digital sound playback with my first real system: the Commodore 64. Unlike the Amiga and the NES, the C64 was never really intended to manage digital soun…| Bumbershoot Software
When we added sound effects to Lights-Out, I described the NES sound system like this: This sound chip is an interesting beast: it’s got a simple synthesizer that’s comparable to the AY-3-8910, wit…| Bumbershoot Software
Let’s actually use the Genesis sound chip as intended, shall we? Let’s take a look at the Yamaha 2612. As a chip, the closest point of comparison we have is to the Creative Labs Sound B…| Bumbershoot Software
5 posts published by Michael Martin during March 2024| Bumbershoot Software
4 posts published by Michael Martin during February 2025| Bumbershoot Software
4 posts published by Michael Martin during May 2025| Bumbershoot Software
The last time I tried my hand at Sega Genesis development, I first looked at the extremely full-featured SGDK and then decided that I preferred a system where I had more explicit control over every…| Bumbershoot Software
Last time, I took a bunch of my old DOS C projects and put them through the modern Watcom cross-compiler instead of through the version of Borland Turbo C I’d originally intended them for. Th…| Bumbershoot Software
Most of the projects I’ve done on this blog are written in assembly language, and for DOS, that meant NASM. However, I learned C and Pascal on DOS, relying mostly on Borland’s compilers…| Bumbershoot Software
In theory, retro assembly language programming is pretty simple. There’s only a small number of things that an 8-bit chip can do, and each of those things is one instruction. The challenge is…| Bumbershoot Software
One of the big advantages of home computers in the early 1980s over their console counterparts was that they usually had some form of bitmap mode—a graphics mode that grants control over each pixel…| Bumbershoot Software
At the height of self-isolation during the COVID-19 pandemic, one might hope that this would give me more time to focus on my hobby projects, to keep myself sane if nothing else. No such luck. The …| Bumbershoot Software
My latest retro project, such as it is, is the resurrection of an old scientific simulation program in a way that should let it run properly on the 8-bit home computers that are my usual focus here…| Bumbershoot Software
Well, here we are. Six weeks after announcing my hiatus, and two months or so after actually writing and scheduling the announcement, and the Platform Guides page is fully updated. I’ve given…| Bumbershoot Software
Last week, I poked around in the C language at both the implementation of a simple linked-list structure and a method for allocating memory for that list without any special language or OS support.…| Bumbershoot Software
With graphics, I/O, and memory control covered, it’s time to move on to sound. The Genesis has two sound chips as part of its architecture—a Yamaha YM2612 OPN2 and a Texas Instruments SN76489…| Bumbershoot Software
Man. It has been, like, six months since we’ve made an 8-bit machine do something not in its spec sheets. So, let’s have a look at the Commodore 64’s bitmap mode. The way this wor…| Bumbershoot Software
Last week’s adventures revolved around TI BASIC and its extensions. Those extensions were shipped as cartridges, or, in TI parlance, “command modules.” This week we’ll trans…| Bumbershoot Software
It’s been awhile since I’ve looked at an architecture that’s completely new to me, and I haven’t done any since creating my new scheme for dedicated platform guides. I’…| Bumbershoot Software
I’ve now got acceptable ports of Simulated Evolution to two 8-bit platforms. I have it working on the Atari 800: Simulated Evolution on the Atari 800 And on the Commodore 64: Simulated Evolut…| Bumbershoot Software
Last week I implemented a few routines that would operate on a singly-linked list data structure on the Motorola 68000 CPU. Despite dating from 1979, the 68000 instruction set sits well enough with…| Bumbershoot Software
This week we’ll finish the little Amiga 500 shooting gallery game we’ve been writing. The last step, as it was in its Atari parallels, is to expand the animation and simulation systems …| Bumbershoot Software
Working on this Z80 project has been burning my brain a bit. I’m going to step back a bit and play around specifically with one part of it: the pseudo-random number generator. Reader alert: T…| Bumbershoot Software
Last time we worked through how to place sprites when we only cared about placing them at one specific spot on the screen. That’s not completely useless—if that sprite only ever changes…| Bumbershoot Software
I implemented my first version of the Lights-Out puzzle for the C64 in 2015. I was mostly aiming to make it be small and to be as straightforward as it could possibly be. This worked, but as it has…| Bumbershoot Software
The vast bulk of my retrocoding articles on this blog have been based on the Commodore 64—a system from 1982. Let’s step back a year to 1981, and a very different, yet also more familia…| Bumbershoot Software
Last time we laid out the playfield—static aspects of the display that aren’t really expected to change. This time we will lay out the sprites we ultimately plan to use to display the s…| Bumbershoot Software
For the next few weeks, we’ll be leaving the specifics of the SNES hardware behind and buckle down into actually implementing our project. This will split up neatly into three parts: one for …| Bumbershoot Software
Last time, we put together a smallish NES program, and I called out some of the logic as being a little hairy. Despite that, the actual complexity of the final code wasn’t all that bad at all…| Bumbershoot Software
Last time I got a C and assembly-language toolchain working for development on the Atari ST. It’s time to actually make use of them. We also got some programs running, but those don’t c…| Bumbershoot Software
There’s a bunch of heuristics and rules for getting BASIC code to run slightly faster. Some of them even actually help. The core principles, though, are that command interpretation is work an…| Bumbershoot Software
Last time, we wrote a program that boasted it was displaying 64 colors at once, but which actually was only displaying four—two, if we don’t count backgrounds. Today we’ll boost that co…| Bumbershoot Software
So far we’ve focused exclusively on the graphical capabilities of the IIgs. Before we move on, we should take a look at the sound capabilities, too. They are also quite nice. We’ll set …| Bumbershoot Software
One of the other things I’ve been doing lately is fiddling around a bit with old type-in programs. This has been amusing mostly because it’s a major part of how I learned to program in …| Bumbershoot Software
Hey everyone. It’s been quite a while since I’ve managed to actually write anything up for this blog. Sorry about that. Let’s dive into a new system and a new technology: graphics…| Bumbershoot Software
Before kicking off my second Amiga 500 hardware-programming project, let’s take a quick detour. While I was developing last week’s project, I needed to build some support programs to he…| Bumbershoot Software
It’s time I went back and finished my tour of the Amiga 500. In my previous adventures, I learned to operate it as an end user and to write and build software for it with a convenient cross-p…| Bumbershoot Software
Last time, we designed and implemented most of a line-drawing bitmap library. The overall goal was to match the system I’d used to port John Jainschigg’s Portrait of Liberty program int…| Bumbershoot Software
We’ve worked through the basics of changing the graphics mode and writing bitmap data, and we’ve taken a closer look at Bresenham’s Line Algorithm and simplified the implementatio…| Bumbershoot Software
Last time, we got some high-resolution graphics out of the Dragon. However, it was essentially only doing “blitting” operations—we were copying out neatly byte-aligned rectangles of dat…| Bumbershoot Software
So far I’ve been rather haphazard in exploring the Dragon and the Color Computer it’s based on—once I got a working toolchain, I started putting the CPU through its paces with a decentl…| Bumbershoot Software
We have, at this point, put the Dragon’s 6809 CPU through its paces quite well. Its instruction set is powerful and general enough that even adapting code intended for a 16-bit machine ended …| Bumbershoot Software
It’s now time for me to turn to the last of the three systems I hoped to look at this year: the Super Nintendo Entertainment System. I didn’t have a lot of experience with the SNES in i…| Bumbershoot Software