Most Amiga games do not use the operating system. They boot from a floppy, throw the OS out of memory, and talk to the chips directly, because in 1989 that was how you got sixty frames a second out of a 7 MHz machine. It also means they know nothing about hard disks, and that a game written for an A500 assumes things about memory and timing that an A1200 does not deliver. The hard disk you finally bought could hold none of your games, and the faster machine broke half of them.
Bert Jahn started on the answer at Christmas 1994 because Cannon Fodder 2 was unplayable from floppy. He had seen a hard-disk install of Agony that worked without the OS, worked out how, and in 1996 split the trick into two halves: a program that takes the machine over, quietens the OS, and hands control to a game, and a small file per game, the slave, that knows where that game keeps its disk loader and how to redirect it to files on the hard disk instead. The first public WHDLoad went to Aminet in the summer of 1996. It is still developed, and there are slaves for essentially every game the Amiga ever had.
A slave is a few kilobytes of somebody’s patience: the exact bytes to change so one game reads its disks from a drawer.
Each game is a drawer on the disk: the disk images, a slave, and an icon whose tooltypes name the slave. Double-click the icon and WHDLoad loads the images into memory, applies the slave, and starts the game, which now boots in a second with no disk swaps. A quit key brings Workbench back. Some slaves need more: a game that ran under Kickstart 1.3 wants a copy of that Kickstart, and WHDLoad looks for it in Devs:Kickstarts under a fixed name, kick34005.A500 for 1.3, kick40068.A1200 for 3.1, with a small relocation file beside it. You have to own the ROM. The name is not negotiable.
What it is on this disk
The games lived for years as a folder on the Windows machine that runs WinUAE, added with the Add Directory button and appearing on the Amiga as a volume called WHDLoad. That is a WinUAE idea, not an Amiga one; a MiSTer wants a disk. So the folder became one, a 32 MB hardfile with a rigid disk block that the Minimig core accepts, mounted as the primary slave beside the system disk. It is not bootable, on purpose, so Workbench on the first disk always wins. A second drive is the story of getting that right.
The WHDLoad program itself was already in C: on the system disk from the WinUAE years, so on this build its installer never ran. On a fresh Workbench it still would: unpack, run Install, accept C:. That is the honest gap in the ledger below. What the scripts do handle is the pieces around it: the Kickstart file under its exact name, the games drawer packed into a hardfile, the copy to the card, and the game icons, which the installers had been asked to draw as RomIcons, a sixteen-colour dither that comes out as noise on a graphics-card screen, fixed by merging the NewIcon each installer left beside it.
What AmiPilot cannot see
WHDLoad takes the machine over. That is the entire point of it, and it means that when a game is running there is no operating system for AmiPilot to live in: the server that answers the host is paused along with everything else. AmiPilot can double-click the icon. It cannot report what happened next. Proving that a game starts needs a picture taken from outside the Amiga, a screenshot of the WinUAE window from Windows, or the MiSTer’s own capture over HDMI, and something to judge that picture against. That layer is not built. It is the next thing on the list, and it is why every game on the disk is, for now, proven by a person with a joystick.
What the scripts and AmiPilot took over
Chapters 10 and 11 of the guide are WHDLoad and the games. Where each step went.
- By hand
WHDLoad
Download WHDLoad, unpack, run Install, accept C:.
Not scripted. On this disk the program was already in C: from the WinUAE install; a fresh Workbench still clicks through the installer. A script for it is the obvious next one.
- Automated
Kickstart
Copy your Kickstart image to Devs:Kickstarts under the exact name, plus the .RTB file from the skick archive.
install_kickstarts.sh takes a ROM you own, works out or accepts the name a slave will ask for, writes it into Devs:Kickstarts, and adds the matching relocation file. setup_winuae.sh --whd-rom does the same while building the WinUAE disk.
- Eliminated
HD-Games folder
Make a folder on Windows, Add Directory in WinUAE, save the configuration.
On the WinUAE path --programs mounts a host folder as DH1 in the generated configuration. On the MiSTer the folder cannot exist.
- Automated
Second disk
—
pack_directory_hdf.sh turns the games folder into a hardfile with a rigid disk block, not bootable, and copy_to_mister.sh puts it on the card, refusing to overwrite a name the core might have mounted.
- By hand
Installs
Unpack each game’s install archive, run its Install, answer its questions, insert the original disks when asked.
Still the Installer, still the disks you own. When it asks for an icon style, choose NewIcon. A drawer that already has its slave and images has no installer left to run.
- Automated
Icons
Live with the RomIcons, or redo each install.
fix_romicons.sh merges the installer’s .newicon into every RomIcon in the games drawer; build_mister_image.sh --romicon-newicons runs it in the mint.
- Once
Mount
—
In the MiSTer’s OSD, the games hardfile as primary slave. Once per card.
- By hand
Check
Start a game.
Still a double-click and a person watching. AmiPilot is paused while a game runs; the outside-the-Amiga capture that would prove a launch is not built yet.
Steps follow Chapter 10 and Chapter 11 of the Green Amiga Alien guide; the ledgers are here and here. History from Bert Jahn’s own account on whdload.de. The words are ours.