ScreenMode Preferences on the MiSTer listing MiSTer:1280x720 modes in 8, 16, 24 and 32 bit, with the 32-bit row selected.

Component · September 2026

Picasso96

The graphics card that is a file. What Picasso96 is, why a MiSTer needs a different monitor from WinUAE, and which of the rows in that list draws the wrong colours.

An Amiga 1200 draws its screen with the AGA chipset, and AGA tops out where a 1992 television did: 640 or so pixels across, interlace if you want more lines, and a flicker to go with it. The machines Commodore never got to build would have fixed this in the operating system. Instead the fix came from the graphics-card makers, each with their own driver, each patching the OS in their own way, so a program written for one card would not open on another.

Picasso96 was Village Tronic’s answer, written by Tobias Abt and Alexander Kneer for the Picasso IV card that the company was building in 1996. It went public in November of that year, named for the year, and it was two things at once. It was a driver for Village Tronic’s own cards, and it was a common layer that any card could sit under, with a free edition anyone could use. It patched only what it had to, which made it the compatible one. It ended up the standard: when AmigaOS 4 needed a graphics system, Picasso96 was what it chose.

A Picasso96 “card” is three things: a library, a monitor file, and a list of modes that ScreenMode learns to show.

The library is rtg.library, RTG for retargetable graphics: the screen can be aimed at something other than the chipset. The monitor is a small program in Devs:Monitors with the card’s name, run at boot by the same mechanism that loads PAL and NTSC, and its icon tooltypes say which board it is and where its settings live. Once it has run, ScreenMode Preferences grows a set of rows named after the card, and picking one of them is the whole upgrade. On the desk that is a real card in a Zorro slot. Here, on both our machines, the card is somebody’s code pretending.

ScreenMode Preferences listing only PAL modes, over a Prefs drawer with colour icons.
Before the monitor. ScreenMode knows five PAL rows and 256 colours at most. Captured on the MiSTer over HDMI.
Workbench Information window for Devs:Monitors/MiSTer showing tooltypes BOARDTYPE=MiSTer and SETTINGSFILE=SYS:Devs/Picasso96Settings.
The card is a file. Information on Devs:Monitors/MiSTer: 2,720 bytes and a BOARDTYPE tooltype.

Two pretenders

WinUAE ships a Picasso96 board called uaegfx. Tick RTG in the emulator, install Picasso96 with the uaegfx driver on the Amiga side, and ScreenMode fills with UAE: rows up to whatever your monitor does. The MiSTer’s Minimig core has its own framebuffer, and the driver for it is a separate archive, MiSTer_RTG.lha, which installs a monitor named MiSTer and rows named MiSTer:1280x720 16bit PC and so on. The two monitors do not know about each other. A disk built in WinUAE and moved to the board wakes up with a saved ScreenMode pointing at a card that is not there, and Picasso96 falls back to a chipset-sized picture in the corner of the television. So the mint removes the other target’s monitor and any ScreenMode saved against it before it installs its own.

The MiSTer rows have one more surprise. The 24-bit and 32-bit 1280x720 modes draw, but with the colours wrong through HDMI; the 16bit PC row draws right. The picture at the top of this page is the 32-bit row selected by hand, on the way to finding that out. The check that runs over every finished hardfile now refuses a MiSTer mode deeper than 16 bits, so that evening does not happen again.

An AmigaShell on the MiSTer: running Devs:Monitors/MiSTer prints Picasso96: could not open rtg.library! Please check your Picasso96 installation.
The monitor was in place, the library was not. The order the pieces land in matters; the installer script writes both or neither.
ScreenMode Preferences in WinUAE with the row UAE:320x200 8bit selected and 640 by 480 typed into the Width and Height fields.
The wrong way. A 320x200 row with 640x480 typed into it gives a virtual desktop that pans when the pointer hits the edge. Pick the row that is the size you want.

What ScreenMode saves

Pressing Save writes ENVARC:Sys/screenmode.prefs, an IFF file with a SCRM chunk: a 32-bit display ID, a width, a height, a depth and some flags. Sixty-two bytes. The display ID is the thing. Picasso96 has a formula for building them, but the low bits differ from row to row on the MiSTer driver, so the scripts do not compute the ID. They read it back from a disk where the row was chosen by hand and saved, keep those bytes as a preset, and write the same bytes onto every new disk. A width and height of 65535 in that file means “the row’s own size”, which is the right answer and the one the typed-in mistake above overrides.

In WinUAE the acceptance run does it the other way round, because there is something inside the machine to press the buttons. AmiPilot opens ScreenMode, selects the 640x480 uaegfx row, and reads the Width and Height fields back before it presses Use, rather than counting clicks and hoping. That is how the picture at the top of the AmiPilot note was taken.

What the scripts and AmiPilot took over

Chapter 5 of the guide is Picasso96: copy the archive, boot, unpack it in a Shell, run the installer, answer its questions about which card you have, reset, open ScreenMode, pick a row, Save. Here is where each of those went.

  1. Automated

    Fetch

    Download Picasso96 and, for the board, the MiSTer RTG archive.

    fetch_archives.sh pulls both from Aminet and GitHub into archives/. Both are freeware; nothing you own is involved yet.

  2. Automated

    Install

    Boot, unpack the archive in a Shell, run the Picasso96 installer, tell it which board you have.

    On the hardfile at rest, from the host. install_picasso96.sh --mister-rtg writes the libraries and the MiSTer monitor and deletes Devs:Monitors/uaegfx and any ScreenMode saved against it. install_uaegfx.sh is the mirror image for WinUAE. Neither boots the Amiga.

  3. Automated

    Emulator

    In WinUAE: RTG board uaegfx, 16 MB of graphics memory, Faster RTG.

    setup_winuae.sh writes those lines into the .uae file along with the rest of the machine. On the MiSTer the core has the framebuffer already; there is nothing to tick.

  4. Automated

    ScreenMode, board

    Open ScreenMode, pick the MiSTer row, Save.

    write_screenmode_prefs.py writes the 62 bytes the board saved when MiSTer:1280x720 16bit PC was chosen by hand, and build_mister_image.sh puts them in ENVARC:. --screenmode PRESET picks another proven row; --keep-screenmode leaves the source disk’s. The first boot comes up at 1280x720 with nothing to click.

  5. Automated

    ScreenMode, WinUAE

    Open ScreenMode, pick a uaegfx row, Use, Save.

    In the acceptance run AmiPilot does the clicking: opens the program, selects the 640x480 row, reads the Width and Height fields back, presses Use, and captures the result (run_workbench_acceptance.py). Done by hand, this is still the one click on the WinUAE path.

  6. Automated

    Check

    Look at the screen and decide it is probably right.

    check_guide_hdf.sh decodes screenmode.prefs on the finished hardfile, names the row it points at, and fails the build on a MiSTer mode deeper than 16 bits or a mode belonging to the other target’s card. verify_winuae_desktop.sh restarts WinUAE and measures the desktop that comes up.

  7. By hand

    Fast RAM

    —

    The RTG screen, NewIcons, MUI and Scalos together want more than the core’s default memory. Fast RAM is set in the MiSTer’s OSD, which no script can reach. Set it once, before the first boot.

The install steps follow Chapter 5 of the Green Amiga Alien guide; the ledger for it is here. History from Village Tronic’s own Picasso96 pages of 1997 and the Aminet readme. The words are ours.