Multitini: six more machines on the same card.
Multitini is the Appletini ONE’s second firmware. It sets the Apple II aside and loads complete FPGA machines from the SD card: a Commodore 64, a Game Boy / Game Boy Color, a Genesis / Mega Drive, a Nintendo Entertainment System, a Vectrex and an Apple IIgs at nearly 60 MHz. It installs next to the Appletini firmware, and you choose which one starts.
What it is
The Appletini firmware uses the card’s FPGA to serve an Apple II. Multitini uses the same FPGA, ARM cores, SD card, HDMI output, audio jack and USB port to be another machine. Each machine, or core, is a complete FPGA image stored on the SD card and loaded on demand. Multitini supplies everything around it: the on-screen menu, USB keyboards and gamepads, media browsing, saves, display settings and effects.
| Core | Variants | What it loads |
|---|---|---|
| Commodore 64 | PAL | D64 and G64 disks, PRG programs, CRT cartridges |
| Game Boy / Game Boy Color | One | GB and GBC cartridges |
| Genesis / Mega Drive | NTSC and PAL | MD, GEN, BIN and SMD cartridges |
| Nintendo Entertainment System | NTSC | NES cartridges, iNES and NES 2.0 |
| Vectrex / Vectrex32 | One | VEC and BIN cartridges, Vectrex32 BASIC programs, OVR overlays |
| Apple IIgs | One, with ROM 1 or ROM 3 | HDV, PO and 2MG hard disks; PO, 2MG and WOZ 3.5-inch disks; DSK and WOZ 5.25-inch disks |
Releases and their notes are on the Multitini releases page. The source is on GitHub at github.com/hasseily/multitini-one.
What you need
- The Appletini ONE with Appletini firmware F1.3.0 and Golden Boot B2.0.6, plus Multitini itself. Installing covers all three.
- Power, one of two ways:
- Inside an Apple //e: the card takes its 5 V from the Apple and needs no jumper. The Apple only powers the card.
- Out of the Apple: the standalone jumper at the top left of the card and the 12 V supply on its DC input, exactly as for ONE//e. The jumper supplies the card’s 5 V; it does not choose the firmware.
- An HDMI display on the mini-HDMI port.
- A USB keyboard, USB gamepads, or both on the green (bottom) USB-C host port, plus a USB mouse for the Apple IIgs. A standard hub connects several at once.
- An SD card with the
multitinifolder from the download, and your games.
Sound comes out of the card’s 3.5 mm audio jack, as with Appletini. There is no audio over HDMI.
Installing
You need two downloads, both linked from the Downloads page:
- The Appletini F1.3.1 release: its
FIRMWARE.BINandBOOT.BIN(Golden Boot B2.0.6). - The latest Multitini release. Its zip has one top folder, named
for the version, that holds
FIRMWARE-MULTITINI.BINand themultitinifolder with the six cores.
- Copy
FIRMWARE.BIN,BOOT.BINand the contents of the Multitini zip’s top folder to the top level of the SD card. If the card already has amultitinifolder, merge the new one into it. - Power-cycle the card. The Golden Boot installs Appletini F1.3.1
and renames its file to
FIRMWARE.OK. - Press A at the
A:APPLETINIboot prompt, open About, choose Update Golden Boot..., then Update and reboot. In an Apple this works only from the menu opened at the boot prompt. - Keep the card powered. The new Golden Boot restarts the
card, installs Multitini from
FIRMWARE-MULTITINI.BIN(which becomesFIRMWARE-MULTITINI.OK) and starts Appletini again.
The full procedure in the docs
explains each step and what to check. If your card already has Golden
Boot B2, copying FIRMWARE-MULTITINI.BIN and the
multitini folder and power-cycling is enough. Never rename
FIRMWARE-MULTITINI.BIN to FIRMWARE.BIN.
Afterwards, the SD card looks like this. Leave each core’s
core.cfg and .bin files as they are: the
card checks their sizes and checksums before loading a core.
FIRMWARE.OK
FIRMWARE-MULTITINI.OK
BOOT.OK
multitini/
cores/
apple-iigs/ apple-iigs-native.bin core.cfg roms/ media/
c64/ c64-pal.bin core.cfg roms/ media/
gbc/ gbc-native.bin core.cfg media/
genesis/ genesis-ntsc.bin genesis-pal.bin core.cfg media/
nes/ nes-ntsc.bin core.cfg media/
vectrex/ vectrex-native.bin core.cfg roms/ media/
Switching firmware
- From Appletini: Boot Settings > Switch to Multitini restarts the card into Multitini for this session. Boot Settings > Startup firmware picks the firmware for every power-on.
- From Multitini: System > Switch to Appletini restarts into Appletini once, and System > Startup firmware saves the power-on choice.
- A switch saves pending disk, save and settings writes first, and leaves the startup choice unchanged. A power cycle always starts the startup firmware.
In an Apple, the program running on the Apple loses the card’s services while Multitini runs. With Appletini as the startup firmware, the simplest way back is to turn the Apple off and on again. If a firmware ever fails to start, the Golden Boot’s serial recovery can start either one.
The menu
At power-on Multitini shows its standby screen,
PRESS F12 FOR MENU, unless System > Autoboot current
core is on. Open or close the menu any time:
- F12 on a USB keyboard. F12 always goes to the menu, never to the running machine.
- On a gamepad, hold Select and Start together for half a second, then release both. Pressed on their own, Select and Start still reach the game. A controller’s Home, Guide or PS button also opens the menu.
In the menu, the D-pad or arrow keys move, A or Enter applies, B or Esc goes back, and the L/R shoulders or Shift+Tab/Tab change pages. The running machine pauses and its sound mutes while the menu is open.
| Page | What it holds |
|---|---|
| Cores | Choose a machine and its variant. Your media stays with each core. |
| Media | Disks, cartridges and programs for the running core, and its save status. |
| Video | Resolution, picture size and border, saved per core. |
| Effects | Color and CRT-style effects, saved per core. |
| Controls | Keyboard layout and controller assignment for the running core. |
| Options | Settings the running core supplies, such as C64 turbo or Genesis pad type. |
| System | Firmware switching, Golden Boot, clock, documents, USB and board status. |
System > Read documents opens any TXT file under
multitini on the SD card, without touching mounted media.
The System page also shows the Golden Boot version and, while a
BOOT.BIN is on the SD card, offers Update Golden
Boot....
Cores & media
On the Cores page, Enter starts a machine and Left/Right
chooses its variant, such as Genesis NTSC or PAL. The running one is
marked LIVE. A switch finishes pending saves, checks and
loads the new core, and brings back the media you last used with
it.
Put your games in each core’s media folder:
multitini/cores/apple-iigs/media/
multitini/cores/c64/media/
multitini/cores/gbc/media/
multitini/cores/genesis/media/
multitini/cores/nes/media/
multitini/cores/vectrex/media/
Then load them from the Media page. The C64, Game Boy and Genesis browsers list their folder without subfolders; the Vectrex browser shows subfolders. A browser lists up to 144 entries, and file names must be shorter than 96 characters. The download includes no games or disks; bring your own.
Controllers
Multitini supports generic USB HID gamepads and the wired
Xbox 360 (045e:028e), Xbox One
(045e:02ea) and DualShock 4
(054c:05c4, 054c:09cc). Bluetooth is not
supported.
By default the D-pad or left stick gives directions, and the face buttons map by position to each machine’s buttons, as listed below. Controls > Controllers remaps any pad, tests it, adjusts sticks and triggers, and assigns it to Automatic, Player 1 or Player 2 (joystick port 1 or 2 on the C64), or Not used. Maps are saved for each controller and each core.
Commodore 64
A PAL Commodore 64 with a 1541 drive as device 8. Use a USB keyboard: the C64 needs one for nearly everything beyond the joystick.
ROMs
The download puts the system ROMs in
multitini/cores/c64/roms/: basic.bin,
kernal.bin, characters.bin and
1541.bin, plus a fast-loading pair in
roms/fast/. Without the first three the C64 cannot start;
without 1541.bin, Drive 8 shows Drive ROM
required.
Media
- Drive 8: mount a D64 or G64 disk. Enter on a mounted disk saves pending writes and ejects it. Normal D64 images are writable; G64 and D64 images with error information are read-only. At a “next disk” prompt, mount the next disk here; no restart is needed.
- Mount & Run: pick a program from the mounted D64.
Enter loads it through the drive and runs it. Right only types
LOAD"name",8,1, so you typeRUNyourself. Left uses a direct-to-memory shortcut for eligible BASIC programs. - Cartridge: load a CRT image. Normal cartridges and the common bank-switched types are supported, including Ocean, Fun Play, Super Games, Epyx FastLoad, Final Cartridge I/II, C64GS, Dinamic, Magic Desk and Simons’ BASIC.
- Program: load a loose PRG; the C64 resets and runs it.
On the first start, a drive8.d64 in the media folder is
mounted automatically.
Options
- Fast serial ROMs: uses the fast ROM pair to speed up loads that go through the standard disk routines. Custom fast loaders are not affected. Changing it restarts the C64.
- CPU turbo:
Smart 2xruns the CPU faster while keeping drive timing native. Off by default; leave it off for timing-sensitive software.
Keyboard
The default layout is US symbolic: keys type the symbols printed on your USB keyboard. Controls > Keyboard switches to MiSTer positional, which follows the C64 key positions. The special keys:
| USB key | C64 key |
|---|---|
| Esc | RUN/STOP |
| Tab, Alt or GUI (Windows/Command) | Commodore key |
| F11 | RESTORE |
| F9 / F10 | ↑ (up-arrow) / + |
| Caps Lock | SHIFT LOCK |
| Backspace | INST/DEL |
| F1–F8 | F1–F8 |
| Arrow keys | Cursor keys |
Joysticks
A gamepad is a C64 joystick: A is Fire, B is Space and X is Control. Automatically assigned pads go to joystick port 2, which most games read; Controls > Keyboard joystick moves them to port 1.
Game Boy & Game Boy Color
Load .gb and .gbc cartridges up to
8 MB from the Cartridge row. No boot ROM is needed; the core
has an open-source one built in.
| Game Boy | Gamepad | Keyboard |
|---|---|---|
| D-pad | D-pad or left stick | Arrow keys |
| A / B | A / B | Z / X |
| Start / Select | Start / Select | Enter / Right Shift |
Battery RAM saves automatically to the SD card. The Battery
save row shows Changes pending or Saved to
SD. The Game Boy has one player.
Genesis & Mega Drive
Choose the NTSC or PAL variant on the Cores page; the
cartridge header selects Japanese or export behavior within it. Load
.md, .gen, .bin and
.smd cartridges up to 8 MB; byte-swapped and SMD-format
dumps are recognized. Two players are supported.
| Genesis | Gamepad | Keyboard (player 1) |
|---|---|---|
| D-pad | D-pad or left stick | Arrow keys |
| A / B / C | A / B / X | Z / X / C |
| X / Y / Z | Y / left shoulder / right shoulder | A / S / D |
| Start / Mode | Start / Select | Enter / Right Shift |
Options > Controller 1 and Controller 2 choose a 6 buttons (the default) or 3 buttons pad for games that need the older protocol; a change reloads the cartridge after saving its memory. Battery RAM and EEPROM saves are written to the SD card automatically, with their status on the Cartridge save row.
Nintendo Entertainment System
An NTSC NES for standard cartridges. Load .nes files,
in iNES or NES 2.0 format, from the Cartridge row; no system
ROM is needed. Multitini supports mappers 0 (NROM), 1 (MMC1),
2 (UxROM), 3 (CNROM), 4 (MMC3), 7 (AxROM), 9 (MMC2), 10 (MMC4),
11 (Color Dreams), 66 (GxROM) and 71 (Camerica), and refuses other
cartridges before they start. Two
players are supported.
| NES | Gamepad | Keyboard |
|---|---|---|
| D-pad | D-pad or left stick | Arrow keys |
| A / B | A / B | Z / X |
| Start / Select | Start / Select | Enter / Right Shift |
Battery RAM saves automatically to the SD card. The Battery save row shows its status.
Vectrex
The Vectrex needs its 8 KB system ROM (Mine Storm plus the
executive) at multitini/cores/vectrex/roms/bios.bin; the
download includes it. With no cartridge, the Vectrex starts its
built-in Mine Storm.
- Cartridge: load a
.vecor.bincartridge. - Overlay: load MiSTer
.ovrscreen artwork without restarting the game. An overlay with the same name as the game loads automatically;Mine_Storm.ovrgoes at the top of the media folder. - Vectrex32 BASIC: run a
.basprogram. F12 stops it and returns to the menu. BASIC programs run without the system ROM.
Gamepad A, B, X and Y are buttons 1–4, and the analog stick works as the Vectrex stick; on a keyboard, use the arrow keys and Z X C V. The Video page adds Overlay enabled, Overlay brightness and Beam brightness.
Apple IIgs
A complete Apple IIgs, with a virtual ZipGS accelerator that runs its 65816 at up to 57.3 MHz, nearly 60 MHz. Use a USB keyboard, and a USB mouse for the desktop.
ROMs
The download puts the ROMs in
multitini/cores/apple-iigs/roms/: the system ROMs
rom1.rom and rom3.rom, the ADB keyboard and
mouse controller ROMs adb1.rom and adb3.rom,
the character ROM char.rom and the hard disk boot ROM
hdd.rom. If they fail to load, Media > System
ROMs tries again.
Disks
- Hard disk 1–8: eight SmartPort drives in slot 7
for
.hdv, ProDOS-order.poand ProDOS.2mgimages. An empty drive keeps its number, so the others never move. - 3.5-inch floppy: an 800 KB
.poor.2mg, or a 3.5-inch WOZ2. - 5.25-inch floppy: a 140 KB DOS-order
.dsk, or a 5.25-inch WOZ2.
PO, 2MG and DSK floppies are writable. Enter on a mounted disk saves
pending writes and ejects it; eject your disks before removing
power. The media folder also keeps the IIgs battery RAM
(pram.bin), the core’s settings and its recovery
journals: leave them, and any .gsraw file next to a
floppy, where they are. Save PRAM and Load PRAM on the
Media page store and restore the Control Panel settings. The download
has no IIgs system or game disks; bring your own.
Options
- Accelerator card: ZipGS, or None for a stock machine. Changing it saves your media and restarts the IIgs.
- CPU acceleration: with ZipGS, the 65816 speed: 2.8 MHz (stock), 3.6, 4.8, 7.2, 14.3, 28.6 or 57.3 MHz. Peripheral timing stays at stock speed.
- ROM version: ROM 1 or ROM 3. Changing it saves and ejects your media and restarts the machine.
- Speaker delay, Joystick delay, Counter delay, Sync to 1 MHz and IRQ delay: the ZipGS compatibility settings. Leave IRQ delay Off unless AppleTalk needs it.
- Force self test: runs Apple’s self test on reset.
- Mouse sensitivity: 25% to 400%; 100% is normal.
Keyboard, mouse & joystick
The USB keyboard is the IIgs keyboard. Alt is Open Apple (Command) and the Windows key is Option; F12 still opens the menu. To reset the IIgs:
| USB keys | Apple IIgs |
|---|---|
| Ctrl+F11 | Ctrl-Reset |
| Ctrl+Alt+F11 | Ctrl-Open Apple-Reset (restart) |
A USB mouse is the ADB mouse. A USB gamepad with an analog stick is the IIgs joystick, with three fire buttons; remap it in Controls > Controllers.
Video & effects
The Video page chooses the same six output resolutions as Appletini, from 1024×768 to 1920×1080, all at about 60 Hz. Resolution applies to every core; everything else on the page is saved per core: Video size (Auto or 1x–4x), a Border with a type (single line, double line, corner brackets, dashed or soft glow), one of 16 colors and 1–20 px of padding. As with Appletini, the display must accept the chosen timing; the card does not read the display’s capabilities.
The Effects page is saved per core and off by default. Check Enable effects, then adjust brightness, contrast, gamma, saturation, hue, color temperature and RGB gain; a display tint (color, white, green, amber or sepia); negative and posterize; and the CRT looks: scanlines, pixel mask (aperture grille, shadow mask or LCD grid), dot bleed, persistence, blur and glow.
Saves, screenshots & settings
Game Boy, Genesis and NES saves are written automatically next to the
cartridge, as the cartridge file name plus .sav. C64 disk
writes go back into the D64 image, and Apple IIgs disk writes into
the mounted disk image. While a save is in progress the menu
says Saving progress. Wait for Saved before removing
power. Wait for it: power lost before then can lose the latest
progress.
PrtScr saves the game picture with its effects, and
Shift+PrtScr saves the whole screen, menu included, as PNG files
in the SD card’s screenshots folder. Both can also be
assigned to controller buttons. The standby screen cannot be
captured.
Multitini’s settings live in
multitini/settings.bin, separate from Appletini’s.
Back it up before trying older Multitini firmware.
Limits
- Multitini never uses the Apple: no Apple keyboard, display, disks or physical cards, and none of Appletini’s virtual cards. Use USB input.
- C64: PAL only; one drive; no tape, 1581 or REU; no T64 files; G64 disks are read-only.
- Game Boy: the cartridge real-time clock is not saved, and MBC7 and TAMA saves are not supported; no Super Game Boy, link cable or save states.
- Genesis: no Sega CD, 32X, Master System, Pico or Virtua Racing, no light guns and no multitap.
- NES: NTSC only; no Famicom Disk System, VS or PlayChoice, Zapper or other expansion peripherals, and no save states.
- Apple IIgs: no NIB disk images. Software that times itself by the spacing of its I/O accesses may misbehave when accelerated; set Accelerator card to None for it.
- Wired USB controllers only; no Bluetooth.
- Every core outputs at about 60 Hz, including PAL machines.
Questions, or a game that misbehaves? Tell the community on the Appletini FPGA Discord or open an issue on GitHub.