My Retro Toolbelt
I like messing around with code and graphics on old computers and game consoles, and I've picked up a pretty good library of tools to do that with. I'm not actually that good at any of this—though I like to think I'm a pretty fair coder when it comes to these old assembly languages now.
Graphics Tools
A lot of these older machines have interesting restrictions beyond just resolution and palette. "Attribute bleed" is one of the more infamous issues, but there's ways around it with clever coding, and so the paint programs I use have varying levels of restriction enforcement.
- Aseprite is basically the default thing to do pixel art with these days, and it does that for a reason. Perfect for things like PICO-8 and I've had great luck with it for platforms like the Amiga or Genesis. Fitting background restrictions on things like the C64 or ZX Spectrum is a lot more work, though. Sprites are still fine there, though.
- ArcPaint64 is a new tool and I haven't really gotten a chance to use it for anything left but it's really cool for C64-specific work. It's got restriction enforcement, but it's also aware of the more efficient ways of bending the rules and not only will it let you bend those rules, it will actually tell you the cost you'll be paying for that bending once you hit real hardware. I really need an excuse to do something with this.
- Multipaint is an older tool that I've looked at only very briefly, but if I ever need to do serious ZX Spectrum art it's going to be the first place I go. It covers a lot of systems but seems to be more rigid about restrictions.
- GrafX2 wants to be a close modern simulation of DeluxePaint on the Amiga, and it gets close enough that I struggle with it, too. It's cool, though. I absolutely understand why some people will want this. I'll be sticking to Aseprite though.
Sound Tools
- Schism Tracker... well. You know how I said I totally understand how some people would want GrafX2 over Aseprite? That's because this is a pitch-perfect modern recreation of Scream Tracker 3 and I wouldn't have it any other way.
- Furnace Tracker focuses on chiptunes and bakes in a whole bunch of particular sound configurations that correspond to various platforms. It doesn't really include prepackaged playroutines, though, so using stuff in a project can be tricky. I was able to build a Sega Genesis playroutine of my own for one of my projects, though.
- GoatTracker 2 is C64-specific and I never really got the hang of it. I think it's still where I'd start if I needed real sound and music for a C64 project though.
Emulators and Debuggers
In recent years emulation has gotten good enough for a lot of systems that you can develop on or to an emulator and put off hardware verification until much later in the process. Here's the emulators I use most often for playing, hacking, developing, or debugging.
There's a lot of them, so I'll start with the consoles and move on to the computers.
- Mesen is one of my favorite emulators of all time, covering the NES, SNES, PC Engine, Master System, Game Boy, Game Boy Color, GBA, and WonderSwan. It has exceptional debuggers and visualizers, including generating handy carts of exactly where the TV's electron beam is pointed when you change some graphics setting. As I write this, the original author is in the process of handing it off to the community, but MesenCE isn't quite a fully-fledged thing yet.
- Emulicious matches Mesen's power and scope, but with a slightly different payload of machine targets: it's got the 8-bit Game Boys, the Master System, and then adds the ColecoVision and MSX.
- Stella is an Atari 2600 emulator and I consider it best of breed for both play and development. Exact raster timing is enormously important
- BlastEm is the emulator I use to play Genesis games. Its got minimal debugger support but generally is of interest becuase it's fast and accurate.
- GensK is an older emulator but it's got good visualizers for things like tile definitions and sound instruments.
- DGen/SDL has a very awkward debugger but it's a proper debugger and it's easier to wrangle than MAME. Genesis debugger support is just generally very bad and
And now, the computers:
- DosBox-X is a recent upgrade from the original DOSbox for me. I'm quit ehappy with its debugging capabilities and of course you can run all your great DOS stuff in here... including any old compilers or QBASIC versions.
- VICE is the standard 8-bit Commodore emulator and has been for ages.
- FUSE is a good emulator for the ZX Spectrum and its many, many clones, pseudo-clones, and successors.
- EightyOne has decent Spectrum support, but you're really here for its extremely good ZX80 and ZX81 support; it's the only emulator I've found that can actually play the games and demos that messed with its graphics logic to fake proper graphics displays.
- AppleWin is my choice for the Apple IIe.
- GSplus is the most convenient option I've found for the Apple IIgs.
- WebMSX is a cool online MSX emulator for a wide range of specs. It works out of the box, and it does more than MSX1 machines, which both stand out. I'm mostly interested in making virtual cartridges for MSX1, myself, and so I generally just use Emulicious with C-BIOS. For just about anything more than that, though, WebMSX seems like it just works.
- WinUAE is a popular Amiga emulator, and it gets the job done fine for me.
Compilers and Assemblers
Goodness, I've collected a lot of these over the years. I suppose it makes the most sense to sort them by the primary CPU they target even though some of them can switch-hit.
8086
IBM PC, PC-98, MS-DOS, Linux, all the way up through to the present day. SuperIlu's collection of resources is unparalleled.
- NASM. Seriously, if you're doing x86 assembly language, just use NASM for basically any project from 16- to 64-bit unless you have to, like, interoperate with DLLs on modern operating systems or something, and maybe even then.
68000
This was in a ton of stuff back in the day but for me it's the CPU of the Amiga and the Sega Genesis/Mega Drive.
- vbcc, along with its companion programs vasm and vlink, is the basis of the modern Amiga NDK.
- SGDK is the Sega Genesis Development Kit. It's a relatively modern C/C++ compiler for the m68k backed up with sjasm (see below!) for the z80 parts and a terrifyingly huge prebuilt set of libraries if you want them. They aren't necessary if you don't, either: if it was good enough for Earthion, it'll be good enough for you!
- ASMotor is a new multi-CPU assembler and since its targets include both the 68000 and the Z80, that makes it perfect for Genesis development.
6502 and 65816
The first assembly I learned! It's also in all kinds of stuff: C64, NES, 8-bit Apples and Ataris, BBC Micro, and on and on. The 16-bit 65816 ended up in the Apple IIgs and the SNES.
- cc65 is a C compiler, assembler, and linker for 6502, with a runtime library for a bunch of platforms. The assembler can also do 65816.
- Ophis is a much simpler assembler that I generally use for smaller projects, especially on C64 or Atari.
- xa65 was the one I used long ago, and while I don't use it any more, a few of my old or long-running projects still rely on it.
- Asar handles the 65816, the SPC-700, and the SuperFX chip. It's a one-stop shop for SNES development. I don't really like it, though. My one SNES project used ca65 instead and just didn't have sound.
Z80
This is an odd sort of cousin to the 8086, and it ended up in a bunch of tech that was mostly also-rans in the US: the TRS-80, ColecoVision, MSX, the 8-bit Sinclair machines, and the Sega Master System. The biggest impact in the US was probably the TI calculators, and maybe the Genesis sound coprocessor.
- Sjasm has a bunch of versions and variants out there; I use this version (0.42c) for pure Z80. It's a later revision than the one in SGDK but the newer stuff I seem to lean on is
- z88dk is a C compiler and assembler and application builder for a ton of Z80-based systems, including basically all the ones I care about. I really didn't like its assembler much, though, and traded over to sjasm once I found it.
- Rednex Game Boy Development System is a very good Game Boy devkit. Its CPU is treated as a Z80 variant but it's a really distant cousin. The dev went on to make ASMotor, which I also liked a lot. If I pick up the GB/GBC again I'll probably use ASMotor instead, but you won't go wrong with RGBDS.