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.
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.
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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.