RGB2RTG v0.74 - an UNOFFICIAL Emu68 fork - Redirect your RGB image to RTG display ================================================================ by Astair86 Your A1200's own picture - games, demos, native screens - on the same HDMI screen as your RTG desktop. No RGB monitor, no scandoubler, no extra cable or board. Install it, power cycle, start a game. WHAT'S NEW IN 0.74 ------------------ * Sound on HDMI, as an option (RGB2RTG menu - Sound): the Amiga's sound plays on HDMI as well - the screen's speakers, or an HDMI audio extractor - in step with the picture, and the Amiga's own audio outputs keep working. Off until you switch it on; it goes on and off at once and stays as you left it (see USING IT). * Fixed from your reports: Indiana Jones and the Last Crusade (the action game) came out garbled; Ikari Warriors had a band at the bottom while the screen scrolled; Aladdin's Magic Lamp; Aladdin AGA's logos; Zool AGA's playfield; the backgrounds of Sonic 060 and Castlevania AGA, cut off on the right; Super Stardust's level-end screen; Wit Premium's picture, shifted right; FullMoon's slowdown; Prey AGA's crash. * Interlaced screens no longer flicker with HDMI sync on some LCDs. * A plain AmigaOS 3.x, such as 3.2, as well as CaffeineOS: Install takes a card set up from Emu68's own config.txt whatever its kernel= line names, puts the RGB2RTG title in Workbench's own menu bar, and says when Picasso96 has no VideoCore monitor yet; SD-Setup can take RGB2RTG off such a card again. WHAT YOU NEED has how to set up 3.2, from Michael Gruber's guide. WHAT'S NEW IN 0.73 ------------------ * Truer colours on HDMI. In its 50 Hz mode the Pi sent the TV's limited colour range, and most PC monitors showed it grey and pale next to the Amiga's own output - testers saw the difference on the two inputs of one monitor. RGB2RTG now sets full-range colour (0-255). A TV that shows crushed blacks or clipped whites with it wants RTG Image's new HDMI colours: Limited (TV). * Steadier HDMI sync. To keep HDMI in step with the Amiga, Follow Amiga made a frame one line longer or shorter several times a second, and some LCDs showed that as flicker on dark pictures (the Pang intro). Now it does so about twice in 40 seconds; every Amiga frame is still shown exactly once. * HDMI at twice the rate, as an option: RTG Image's HDMI rate 2x runs HDMI at 100 Hz (120 for NTSC) and shows each Amiga frame twice, with HDMI sync too. Only for a display that takes 1080p at 100 Hz - any other shows nothing at all with it (see IF SOMETHING GOES WRONG). WHAT'S NEW IN 0.72 ------------------ * Eco mode (on by default): while only the RTG desktop is on HDMI, the Pi no longer draws the Amiga picture nobody can see, so it stays cooler. The moment a game, demo or native screen comes to the front, the picture is there as before. * 31 kHz screen modes, as a test: DblPAL, DblNTSC, Multiscan (Productivity), Euro72 and friends can now be shown on HDMI, sharp and with the mouse pointer. They stay off until you switch them on in RTG Image (31 kHz modes: On). PAL and NTSC screens are the same either way. * OutRun AGA, and programs that point the copper at a new list the same way, no longer show only the copper's colours. * Interlaced screens keep their two fields in the right order: the Batman demos' intro text no longer jumps a line. * A Flicker fixer switch in RTG Image, for those who like interlaced screens a field at a time, the way the Amiga's own output shows them. * Programs that change their copper list while it is on screen are followed more closely (the end of Batman Rises' city scene). * When a program writes into memory the blitter is still drawing into, HDMI now ends up with what the real machine has. * The copper waits for the blits it starts as long as the real blitter would - for demos that draw with the copper, like Desert Dream. WHAT'S NEW IN 0.71 ------------------ * Demos that take over the display from the RTG desktop without telling the system - they load their own copper list - work now. HDMI switches to them, and they get the standard PAL (or NTSC) display they were written for instead of the 31 kHz one CaffeineOS leaves behind the RTG desktop. There, Lamers' Shiva showed only static, on the Amiga's own RGB port too, with garbled sound. When the demo hands the display back, everything goes back as it was (see GOOD TO KNOW). * TV border (RTG Image): for a TV that cuts the edges of 1080p off. Every picture on HDMI - the desktop, the Amiga picture, the mouse pointer - gets a few percent smaller, with a black frame, still at 50 Hz. It is off unless you set it. WHAT'S NEW IN 0.7 ----------------- * Interlaced screens (Pi 4): both fields are woven into one picture, the way a flicker fixer does it, so interlaced titles and pictures stand still on HDMI instead of flickering. * Super-hires HAM8 screens look right on HDMI. * Demos that rewrite their own code: only the instructions that are actually rewritten run the careful way now, and everything around them runs at full speed. (0.6 slowed all code in chip RAM down - you could see it in Arte's 3D dots.) * Blits started by the copper use the blitter registers the 68k set (Desert Dream's rays). * The installer understands Emu68's own config.txt, not only CaffeineOS's. * A dtoverlay= line that named unicam as another overlay's setting (dtoverlay=sdhc,unit0=rw,unicam,boot) gave no picture, because the Pi loads only one overlay per line. The installer and C:rgb2rtg now point it out, and C:rgb2rtg tells you when the kernel is waiting for a unicam overlay that isn't there. * The VideoCore monitor icon: DisplayChain=No kept games and native screens off HDMI. The installer now sets it to Yes, and Uninstall puts it back. VC4_SWITCH_METHOD and VC4_SWITCH_INVERT could keep HDMI stuck on one picture - with the RGB2RTG kernel, VideoCore.card now ignores them. * VideoCore.card with another kernel (stock Emu68) works like the stock driver, instead of showing black with coloured dots. WHAT'S NEW IN 0.6 ----------------- * NTSC. NTSC screens, games and demos are followed, on an NTSC A1200 and on a PAL one started in NTSC. RTG Image has a Video setting, PAL or NTSC: the standard the Amiga starts in, HDMI at 1080p 50 or 60 Hz to match (with HDMI sync every frame is shown once), and the picture framed for that standard. Power cycle after changing it. * Trackloaded ECS demos - 9 Fingers, State of the Art, Desert Dream, Arte - load from disk and draw with the blitter. That picture is now right on HDMI too (the blitter is repeated the way WinUAE does it). * Demos that rewrite their own code as they run: the kernel notices and runs that code the careful way (see GOOD TO KNOW). * Scanlines (RTG Image): 25% to 100% dark, with a level of their own for interlaced screens. Pi 4. * Position... (RTG Image): move the picture on HDMI with the mouse or the keys, on a calibration screen. PAL and NTSC each keep their own position. * The picture is drawn on a Pi core of its own. * A program that restarts the copper by reading its strobe register gets the right copper list on HDMI. * No more "insert volume DOpus5:" requester in the installer on a system without Directory Opus. * The licences in full in the package, and the Emu68 source archive published again (the 0.5 one had Windows line endings, and the patch did not apply to it). WHAT'S NEW IN 0.5.1 ------------------- * Text on native screens now shows on HDMI. It was missing everywhere: the Early Startup Control, requesters and windows on native screens, the loading text some demos show. * A config.txt edited by hand works with a plain dtoverlay=unicam line: the kernel switches the ",boot" part on by itself. * The report (C:rgb2rtg) names the RTG driver, and tells you what to check when the Amiga picture hasn't reached HDMI yet. WHAT'S NEW IN 0.5 ----------------- * First public prototype. * The A1200's own picture - games, demos, native screens - on the Raspberry Pi's HDMI output, in 24-bit colour, switching with the RTG desktop just like any native screen does. * HDMI sync: the HDMI frame follows the Amiga's (PAL, 49.92 Hz), so in PAL games every frame is shown once. Some demos still hitch now and then (see GOOD TO KNOW). * The Amiga's sound on HDMI as well, if you want it (RGB2RTG menu - Sound): the screen's speakers, or an HDMI audio extractor. * The RGB2RTG menu on the desktop: RGB2RTG (on/off), RTG Image (sharp/smooth, crop, scaling, HDMI sync), Sound and About. * Its own RTG driver: VideoCore 1.5 with our changes. * Install and Uninstall. WHAT IT IS (PLEASE MAKE A BACKUP OF YOUR EMU68 SDCARD) ------------------------------------------------------ In short: the picture of your A1200's own chipset, on the same HDMI screen as your RTG desktop. How it works: your real AGA chipset keeps running exactly as before - nothing is emulated in its place. The RGB2RTG kernel (Emu68 with RGB2RTG added) sees everything the 68k writes to chip RAM and to the custom registers, and keeps its own copy of chip RAM on the Pi. One of the Pi's cores then redraws the very same picture, line by line, in step with the real beam. Whenever a native screen is in front - a game, a demo, a non-RTG screen - you see that picture on HDMI; when the RTG desktop is in front, you see the desktop. WHAT YOU NEED ------------- * An Amiga 1200 with a PiStorm32-lite and a Raspberry Pi 4 or 3 (testers run it on a Pi 3 too; the flicker fixer and scanlines are Pi 4 only). * CaffeineOS with its WHDLoad setup and its RTG (Picasso96) desktop. Tested with CaffeineOS 9317. Or a plain AmigaOS 3.x, such as 3.2, with Picasso96 (see below). * A TV or monitor that takes 1080p at 50 Hz (60 Hz for NTSC). Nearly all of them do. The installer offers to set it up, and it's what makes games run smoothly. * Not a must: a Windows PC with a card reader. SD-Setup.cmd is the easy way to get the RGB2RTG drawer onto the card, and the PC is the way back if the Amiga doesn't start after installing (see IF SOMETHING GOES WRONG). You don't have to install Emu68 first: the package brings its own kernel (Emu68 1.1.0-beta.1 with RGB2RTG added). CaffeineOS 9317 as it comes, with its own Emu68 1.0.7, is all the installer needs. RGB2RTG also brings its own RTG driver, VideoCore 1.5 with my changes. The driver you have now is kept, and Uninstall puts it back. Without CaffeineOS - a plain AmigaOS 3.x, such as 3.2, on a card set up from Emu68's own config.txt - the card's own Emu68 is all the installer needs too, but the RTG desktop is up to you: * Picasso96 itself, before you run Install: the installer stops if there is no SYS:Libs/Picasso96. RGB2RTG brings only the VideoCore driver. * A VideoCore monitor in DEVS:Monitors (CaffeineOS has one). Picasso96 starts VideoCore.card only through a monitor whose BOARDTYPE tooltype says VideoCore: without one there is no RTG desktop, and the Amiga's picture never reaches HDMI. If Picasso96's installer offers no VideoCore board, let it install another one. Then, in DEVS:Monitors, select that board's monitor and choose Copy in Workbench's Icons menu (it copies the file and its icon), name the copy VideoCore and change its BOARDTYPE tooltype to VideoCore; leave its other tooltypes as they are. Made before you run Install, it is looked after there too: Install makes sure its DISPLAYCHAIN tooltype doesn't say No. If there is no VideoCore monitor, Install tells you so at the end (it installs all the same): make it then, run C:rgb2rtg INSTALL MONITOR in a Shell, which sees to its DISPLAYCHAIN, and power cycle. * VideoCore screen modes, after Install and the power cycle. If Prefs/ScreenMode lists none, make them in Prefs/Picasso96Mode: a setting for the VideoCore board, with a resolution and its colour depths. A mode's timings and rate don't change HDMI: VideoCore.card scales the RTG desktop to fit the HDMI mode the Pi starts in (1080p at 50 Hz, 60 for NTSC, after the installer's Yes). Pick one in ScreenMode, Test it, then Save. Michael Gruber set up AmigaOS 3.2 on a Raspberry Pi 3A+ this way, with Picasso96 from Aminet, and wrote it all down in an installation guide of his own - this part is drawn from it. Thank you, Michael. WHAT IS IN THE PACKAGE ---------------------- README.txt this file Commands.txt every rgb2rtg command, for the Shell (also in the Amiga drawer) SD-Setup.cmd on the PC, with the SD card in a reader: prepares the card, or takes RGB2RTG out of config.txt again (PC/ holds its script) Amiga/RGB2RTG/ the drawer that goes to the Amiga: Install the installer Uninstall puts everything back ReadMe.txt this file, for the Amiga Files/C/rgb2rtg the rgb2rtg command (menu, settings, status); it carries Emu68's ntsc and pal overlays (MPL-2.0, src/overlays/ in the Emu68 source) Files/Kernel/Emu68-rgb2rtg.gz the RGB2RTG kernel: Emu68 1.1.0-beta.1 with RGB2RTG added, for the PiStorm32-lite Files/Overlays/unicam.dtbo Emu68's unicam overlay (MPL-2.0, from src/overlays/unicam.dts in the Emu68 source; copied only if the card doesn't have it) Files/Libs/Picasso96/VideoCore.card the VideoCore 1.5 RTG driver, our build Licenses/ GPL-2.0 (RGB2RTG), MPL-2.0 (Emu68 and VideoCore.card), the UAE/WinUAE notices, and the libraries Emu68 is built with Source/ the source code, the RTG driver's too CHECKSUMS.txt MD5 of every file, to check a copy A separate download: RGB2RTG-0.5-emu68-src.tar.gz, the complete source of the Emu68 the kernel is built from (unchanged since 0.5; published again with 0.6 - the first one had Windows line endings, and the patch did not apply). Both - the package and this archive - are on RGB2RTG's page: https://astair86.itch.io/rgb2rtg-amiga1200 INSTALLING ---------- 1. Make a backup of your SD card - an image of the whole card is best. At the very least, copy everything on the EMU68 partition (the one with config.txt) to a PC, drawers and all. 2. Get the Amiga/RGB2RTG drawer onto the Amiga, anywhere you like (RAM: is fine): over the network or on a CF card. Or use a PC: unpack the archive there with its folders as they are, switch the Amiga off, put its SD card in the PC, double-click SD-Setup.cmd where you unpacked it and choose Prepare. It finds the card by itself, puts the drawer on it - on the Amiga, that's the RGB2RTG drawer on the EMU68 disk - and, on CaffeineOS, makes sure the Amiga may write to that partition (on a plain 3.2 card that is config.txt's job: see READ-ONLY under IF SOMETHING GOES WRONG). The rest of the package doesn't need to go on the card. (SD-Setup.cmd runs the script in the PC folder beside it, and that script takes the drawer from the Amiga folder beside that: started from inside the archive window, or copied out on its own, it finds neither.) If Windows offers to format a drive when the card goes in, click Cancel: that is the Amiga's own partition, which Windows can't read, and formatting it erases everything the Amiga keeps there. EMU68 is that disk's name on CaffeineOS. On a plain AmigaOS 3.2 card it may have another name - the installer finds it by what's on it - or not be mounted until you open the icon that mounts it: MOUNTFAT on some cards, or one in Storage/DOSDrivers. 3. Double-click Install. It checks that this is an A1200 with a PiStorm32-lite and a Pi 4 (or 3), that Picasso96 is installed, and that the boot partition can be written to. It finds that partition itself whenever it's mounted - it is, if Install runs from the RGB2RTG drawer on the card. If it isn't (on a plain AmigaOS 3.2 it may be mounted only from an icon), Install asks which disk it is: mount it - the requester's Help says how - click Volumes and pick it. Then it asks one question: HDMI at 1080p 50 Hz (60 Hz on an NTSC Amiga). Yes is recommended. It isn't asked when your own lines in config.txt already set that rate. 4. POWER CYCLE the Amiga: switch it off, wait a few seconds, switch it on. A reset (Ctrl-Amiga-Amiga) does not load a new kernel. What the installer changes - Uninstall undoes each of these, except the new files on the boot partition, which simply stay there unused: * C:rgb2rtg * EMU68:kernel/Emu68-rgb2rtg.gz (a new file; your kernels stay) * EMU68:overlays/unicam.dtbo, only if the card had none * SYS:Libs/Picasso96/VideoCore.card - the one you had is kept first, as VideoCore.card.pre-rgb2rtg * EMU68:config.txt - a copy of it as it was is kept first, as config.txt.pre-rgb2rtg. In the PiStorm32-lite's two sections, [gpio24=0] and [gpio4=0], kernel= points at the RGB2RTG kernel; the old line stays, as a comment starting with #RGB2RTG-WAS:. After the cmdline= line comes a block from "# RGB2RTG begin" to "# RGB2RTG end" with dtoverlay=unicam,boot (the display path the picture is shown through); if you said yes, the three 1080p 50 Hz lines (60 Hz for NTSC); and, with HDMI colours on Full (PC) - the default - hdmi_pixel_encoding=2, the full-range colours; with Sound on, hdmi_drive=2 (HDMI mode, so that a display that says it is DVI gets the sound as well). A line config.txt already has is not added again. A Video setting that isn't your Amiga's own standard adds dtoverlay=ntsc or dtoverlay=pal there, and puts that file in EMU68:overlays if the card has none. A card set up from Emu68's own config.txt, as a plain AmigaOS 3.x card usually is, has neither section; its kernel= line at the top names Emu68 itself (kernel=Emu68-pistorm32lite.gz, or kernel=Emu68-pistorm.gz on some 3.2 cards). It is changed the same way, whatever file that line names: it points at the RGB2RTG kernel, the old one is kept under it, and the block goes at the end of the file. The kernel goes into a KERNEL drawer, made if the card has none. * the RGB2RTG title in the desktop menu: in Directory Opus's user menu and S:ToolsDaemon.menu when you have them (CaffeineOS does), otherwise in Workbench's own menu bar (before 3.1.4, in its Tools menu) - Install's last window says where. And a short block in S:User-Startup that puts your settings in force at every boot (on a plain AmigaOS it also puts the title back in Workbench's menu bar). Each of these files is copied to *.pre-rgb2rtg first. * ENVARC:RGB2RTG.prefs, your settings (running Install again keeps them) * the VideoCore monitor icon in DEVS:Monitors, only if it says DisplayChain=No: afterwards it says Yes, and the icon as it was is kept first as .info.pre-rgb2rtg Installing by hand: the installer knows CaffeineOS's config.txt and Emu68's own. Got a different one? Then do the same by hand. Copy Emu68-rgb2rtg.gz to the KERNEL drawer of the boot partition and point your PiStorm32-lite's kernel= line at it. Add dtoverlay=unicam,boot to config.txt on a line of its own - the Pi loads one overlay per line, so inside another overlay's line (dtoverlay=sdhc,unit0=rw,unicam,boot) unicam is not loaded. For 50 Hz add hdmi_group=1, hdmi_mode=31 and hdmi_force_mode=1. Copy VideoCore.card to LIBS:Picasso96 and rgb2rtg to C:, and put "C:rgb2rtg APPLY >NIL:" in S:User-Startup. After that, C:rgb2rtg ON or OFF switches the picture from a Shell. USING IT -------- Start a game or a demo: when its screen is in front, its picture is on HDMI. Back on the desktop, HDMI shows the RTG desktop again. That's all there is to it. The RGB2RTG menu on the desktop: * RGB2RTG - the Amiga picture on HDMI, on or off. Off: HDMI is black while a native screen is in front (the RTG desktop is shown as always). * RTG Image - how the picture looks (see below). * Sound - the Amiga's sound on HDMI as well, on or off (see below). * About - version and licences. The same from a Shell: C:rgb2rtg ON | OFF the picture on HDMI on or off C:rgb2rtg VIDEO=PAL | NTSC the Video setting (see below) C:rgb2rtg HDMIRATE=1X | 2X HDMI at the Amiga's rate, or twice it (below) C:rgb2rtg HDMICOLOURS=FULL | LIMITED full-range colours, or a TV's (below) C:rgb2rtg HDMISYNC=ON | OFF HDMI frames follow the Amiga's, or not C:rgb2rtg HDMISOUND=ON | OFF the Amiga's sound on HDMI as well, or not C:rgb2rtg XPOS=n YPOS=n moves the picture (see Commands.txt) C:rgb2rtg SCANLINES=n scanlines, 0 (off) to 4 (see Commands.txt) C:rgb2rtg a status report (for bug reports) The sound on HDMI (RGB2RTG menu - Sound, or C:rgb2rtg HDMISOUND=ON): the Amiga's sound plays on HDMI as well - on the screen's speakers, or through an HDMI audio extractor - in step with the picture, and the Amiga's own audio outputs keep working. It goes on and off at once, and stays as you left it after a power cycle. It is Paula's sound as the Pi makes it again, not a recording of the Amiga's output, so it can differ a little; the Amiga's own output stays the reference. Only the Pi's first HDMI port (HDMI0, next to the power socket on a Pi 4) carries it. PICTURE SIZE AND SHARPNESS -------------------------- RGB2RTG menu - RTG Image: * Video: PAL or NTSC (default: whatever your Amiga is) - the standard the Amiga starts in. Save sets config.txt for the next power cycle: HDMI at that standard's rate (1080p 50 or 60 Hz, when config.txt sets a rate at all), and, if it isn't your Amiga's own standard, Emu68's ntsc or pal overlay - so a PAL Amiga plays NTSC games at full speed, and the other way round. The picture's framing (NTSC has 200 lines where PAL has 256, and a different pixel shape) follows the standard the Amiga actually started in. Emu68's overlay also tells AmigaOS about the other crystal, so its clock runs 0.9% off in the other standard (NTP puts it right). * HDMI rate: 1x (default) - HDMI at the Amiga's rate, 1080p at 50 Hz (60 for NTSC), every frame shown once; 2x - twice that, 100 Hz (120 for NTSC), every frame shown twice. 2x is for a display that flickers at 50 Hz. HDMI sync works with both: Fixed rate gives exactly 100 Hz, Follow Amiga keeps every other HDMI frame in step with the Amiga's (99.84 Hz for PAL). Like Video it's config.txt's: Save sets it for the next power cycle. Check first that your display takes 1080p at 100 Hz (120): one that doesn't shows nothing at all - see IF SOMETHING GOES WRONG. The status report's HDMI frame says 10000 us at 100 Hz. * HDMI colours: Full (PC) (default) - colours 0-255, as PC monitors and anything on DVI want; Limited (TV) - the TV range, 16-235, for a TV that shows Full with crushed blacks or clipped whites. Like Video, Save sets it in config.txt for the next power cycle; it is the RTG desktop's too. * Look: Sharp (default) shows every Amiga pixel as a crisp block; Smooth filters the scaling. * Crop: Standard - the normal screen, no border (640x256 in PAL, 640x200 in NTSC); Overscan (default) - a little border, for games and demos that draw into it; Full frame - everything the chipset sends. * Scale: 4:3 (default) - the shape a real monitor gives; Integer - whole-number scaling only, the sharpest; Fill screen - stretched to fill the whole display. * HDMI sync: Follow Amiga (set by the installer with HDMI at the Amiga's rate, on a Pi 4 - on a Pi 3 it starts off, as it hasn't been tried there yet) - the HDMI frame moves in step with the Amiga's; Fixed rate - HDMI keeps its own rate, and every few seconds a frame is repeated or dropped. * Scanlines: dark lines between the Amiga's lines, like on a CRT - Off, 25%, 50%, 75% or 100%. They come out even with Scale: Integer; with 4:3 or Fill screen some are a line thicker than others. Interlaced sets them for interlaced screens, which already have lines in between (Off suits most). The Pi's display hardware lays them over the picture, so they cost no speed. Pi 4 only. * Flicker fixer: On (default) - both fields of an interlaced screen woven into one steady picture; Off - a field at a time, the way the Amiga's own output shows them, flicker and all. Pi 4 only (a Pi 3 always shows a field at a time). * 31 kHz modes: Off (default) or On - the productivity screen modes (DblPAL, DblNTSC, Multiscan/Productivity, Euro72...) shown on HDMI, sharp and with the mouse pointer; Off shows them black, as before. New, and still a test. PAL and NTSC screens are not touched either way. * Eco mode: On (default) - nothing is drawn while only the RTG desktop is on HDMI, so the Pi stays cooler; the picture comes back the moment a native screen is in front. Off draws it all the time, as before. * TV border: Off (default), 2% to 10% - every picture on HDMI gets that much smaller, the desktop too, with a black frame around it: for a TV that cuts the edges off (see IF SOMETHING GOES WRONG). The pictures are scaled for it, so they're a little softer - leave it Off if your display shows everything. It sets both directions; for a TV that cuts more off one way, C:rgb2rtg BORDERX= and BORDERY= set each (Commands.txt). * Position...: opens a calibration screen on HDMI - a grid, with a frame around the standard area (640x256 in PAL, 640x200 in NTSC). Drag the picture with the mouse, or move it with the cursor keys, W A S D or keypad 8 4 6 2 (hold Shift for bigger steps). The right mouse button or Return keeps the position, Esc puts it back. How far it can move depends on the crop; Full frame already shows everything, so there it can't move. PAL and NTSC each keep their own position: after changing the Video setting, set it once for the other standard too. Changes show at once. Save keeps them, Use keeps them until the next reboot, and Cancel (or the close gadget) puts back what was there. GOOD TO KNOW ------------ * The sound on HDMI is new in 0.74. It was tried on a Pi 4 with HDMI at 1080p 50 Hz, through an HDMI audio extractor, in games and demos; on a Pi 3, with HDMI at twice the rate (100/120 Hz), in the 31 kHz modes and on AmigaOS 3.2 it is not tried yet - tell us how it goes. It is Paula as the Pi makes it again, so a program that plays its samples in an unusual way can sound a little different from the Amiga's own output, and the A1200's sound filters are not there yet. * PAL and NTSC screens are followed, whichever your Amiga is and whatever a program switches to. With HDMI at the other rate - an NTSC game on 50 Hz HDMI, or a PAL one on 60 Hz - frames get dropped or shown twice, so it judders a little: set Video (RTG Image) to what you play most. * The productivity screen modes - DblPAL, DblNTSC, Multiscan, Euro72 and the like, 31 kHz and more - are followed when RTG Image's 31 kHz modes is On (still a test); when it's Off, such a screen is shown black. They run at their own rates (DblPAL 47 Hz, Productivity 57 Hz, Euro72 68 Hz), so on 50 Hz HDMI a frame is now and then shown twice or left out. An interlaced one (DblPAL High Res Laced) is shown a field at a time. (The 31 kHz screen behind the CaffeineOS desktop doesn't matter - the desktop is in front of it.) * The HDMI picture is about one frame behind the real one. * Interlaced screens are woven on a Pi 4: each picture is the newest field together with the one before it, as on a flicker fixer. Things that move fast in an interlaced screen show fine combs at their edges. RTG Image's Flicker fixer (C:rgb2rtg FLICKERFIX=OFF) shows them a field at a time instead. * With HDMI sync on, the display's frame rate moves by a fraction of a Hz to follow the Amiga (PAL 49.92 Hz; NTSC 59.28 Hz on a PAL A1200, 59.83 on an NTSC one). It does that by making a frame one line longer or shorter, about twice in 40 seconds (it used to be several times a second, which some LCDs showed as flicker on dark pictures). Nearly every display takes that without noticing. If yours blanks now and then, switch HDMI sync off in RTG Image. * Demo parts that run at exactly 50 Hz can drop one frame every few seconds: HDMI can follow the Amiga down, but not yet up. * Some demos rewrite their own code as they run (State of the Art does). Emu68 on its own would keep running the old code, and the picture would go wrong. The RGB2RTG kernel notices this and runs each instruction the demo keeps rewriting the careful way - on its own, checked before each run, as a 68000 would - until 5 seconds after the rewriting stops. Everything else runs at full speed. rgb2rtg.smc=off on the kernel's command line switches this off (Commands.txt, section 8). * Keep the Pi cool (a working fan) and at its standard clock. A Pi that overheats (around 80 C) or is overclocked throttles, and each time its clock stops for a moment - on the first test machine that was a hitch every second or two. RGB2RTG now makes up for the lost time, but a hot Pi is slower at everything. * The Amiga's own audio outputs keep working as always; the sound on HDMI is an option on top of them (RGB2RTG menu - Sound). * RGB2RTG needs no RGB cable, and the Amiga's own video output keeps working as always. * A demo started from the RTG desktop that takes over the display without telling the system - it loads its own copper list - is looked after by the kernel: HDMI switches to it, and it gets the standard PAL (or NTSC) display it was written for. CaffeineOS leaves a 31 kHz display behind the RTG desktop, and there such a demo showed only static, on the Amiga's own RGB port too, with garbled sound (Lamers' Shiva did). When the demo hands the display back, everything goes back as it was. C:rgb2rtg TAKEOVER=OFF leaves such programs alone (Commands.txt). * Bubble Bobble (WHDLoad) shows streaks and striped platforms: the game never sets one of its two bitplane modulos, and the screen WHDLoad shows at start leaves it at -2. The Amiga's own RGB output shows exactly the same - it's the game, not RGB2RTG. UNINSTALLING ------------ Double-click Uninstall in the RGB2RTG drawer, then power cycle. It puts back the previous kernel line in config.txt and your previous VideoCore.card, takes the RGB2RTG block out of config.txt, puts back the VideoCore monitor icon if Install changed it, and removes the RGB2RTG menu, its lines in S:User-Startup, the settings and C:rgb2rtg. The kernel file stays on the boot partition, where nothing uses it any more. IF SOMETHING GOES WRONG ----------------------- * The Amiga doesn't start, or the screen stays black: switch it off, put the SD card in a PC (if Windows offers to format a drive, click Cancel - see INSTALLING, step 2), double-click SD-Setup.cmd and choose Remove. It takes RGB2RTG out of config.txt exactly as Uninstall would. (By hand: copy config.txt.pre-rgb2rtg over config.txt, or delete the RGB2RTG lines and block and remove "#RGB2RTG-WAS: " from the old kernel= lines.) Your previous kernel then starts. If its RTG desktop doesn't come up (an older Emu68 with our VideoCore 1.5), hold both mouse buttons at power-on, boot with no startup-sequence, and in the Shell: copy SYS:Libs/Picasso96/VideoCore.card.pre-rgb2rtg SYS:Libs/Picasso96/VideoCore.card Then double-click Uninstall in the RGB2RTG drawer for the rest - the RTG driver (yours back, if you had one), the menu, the S:User-Startup lines and C:rgb2rtg (see UNINSTALLING). Until then a requester at every boot says the kernel that started is not RGB2RTG's. * The RTG desktop doesn't come back after installing: in a Shell, copy SYS:Libs/Picasso96/VideoCore.card.pre-rgb2rtg over SYS:Libs/Picasso96/VideoCore.card and power cycle - and please tell us which driver you had. * Games and native screens never show on HDMI - it stays black, or on the RTG desktop: first, in a Shell, run C:rgb2rtg. Its first line names the kernel that is running (RGB2RTG and its version). If it says instead that this machine is not running the RGB2RTG kernel, the Amiga was reset rather than switched off and on after installing, config.txt starts another kernel, or the kernel was started with rgb2rtg=off. Further down, "picture on HDMI" must say ON (C:rgb2rtg ON switches it on). The line under it, "follower on core", must not say NOT running; if it says "no unicam overlay", config.txt needs dtoverlay=unicam,boot on a line of its own (see INSTALLING, "Installing by hand"). The VideoCore.card line must name the driver: "not loaded" there means Picasso96 did not load it - on a plain AmigaOS 3.x, see the VideoCore monitor under WHAT YOU NEED. * No sound on HDMI: in a Shell, run C:rgb2rtg - its "HDMI sound" line says how the sound plays, or why it doesn't. "the display gets DVI, not HDMI": switching Sound on puts hdmi_drive=2 into config.txt when the SD card's boot partition is mounted (C:rgb2rtg INSTALL CHECK shows it - if it isn't there, mount the partition the way your system does and switch Sound on again); then switch the Amiga off and on once. "no HDMI clock": power-cycle with the display on. A display's or an extractor's own volume and mute are not RGB2RTG's - nor is a TV input that is set to another sound source. * HDMI stays on the RTG desktop when a game or a native screen should be on it: look at the tooltypes of the VideoCore monitor icon (DEVS:Monitors). DISPLAYCHAIN must not be NO - Picasso96 only hands HDMI over to native screens when the card is in the display chain (CaffeineOS has DisplayChain=Yes). The installer sets it to Yes (C:rgb2rtg INSTALL MONITOR; Uninstall puts the icon back). With the RGB2RTG kernel, VideoCore.card ignores VC4_SWITCH_METHOD and VC4_SWITCH_INVERT: the picture only reaches HDMI through its own switch (CSI). Before 0.7 either one could keep HDMI stuck on one picture - the RTG desktop never showing, or native screens never. * The display says "no signal" or "out of range" after installing, or after changing Video or HDMI rate: it doesn't take 1080p at that rate. On a PC, delete the three 1080p lines inside the RGB2RTG block of config.txt (hdmi_group, hdmi_mode, hdmi_force_mode). After HDMI rate 2x, then also set it back to 1x (RTG Image, or C:rgb2rtg HDMIRATE=1X), or the next Save writes the lines again. * On a TV, blacks look crushed or whites clipped since 0.73: the TV ignores the full-range colour RGB2RTG now sends. Set RTG Image's HDMI colours to Limited (TV), Save, and power cycle. * On a TV the desktop's edges are cut off, whatever its resolution: the TV enlarges 1080p 50 Hz, a TV mode, the way it does broadcast pictures (overscan). The sharpest fix is the TV's picture size setting: "Full Pixel", "Just Scan", "Screen Fit" or "Dot by Dot" - the name depends on the make (older Sony Bravias: Settings, Screen, Display Area). If there's no such setting, set a TV border in RTG Image (or C:rgb2rtg BORDER=4, Commands.txt) until nothing is cut off: every picture gets a little smaller, and 50 Hz is kept. Or delete the three 1080p lines inside the RGB2RTG block of config.txt (hdmi_group, hdmi_mode, hdmi_force_mode): HDMI then runs in CaffeineOS's own mode again, which the TV shows whole - but not at 50 Hz, so PAL games judder a little. * The installer says the EMU68 partition is READ-ONLY: CaffeineOS's Boot/cmdline.txt (on that partition) needs sd.unit0=rw and emmc.unit0=rw. CaffeineOS 9317 has both, and SD-Setup.cmd's Prepare adds them if they're missing. A stock Emu68 1.1.0-beta.1 kernel you put on the card yourself ignores them: go back to CaffeineOS's kernel, or copy the files by hand from a PC (see INSTALLING, "Installing by hand"). On a plain 3.2 card it is usually config.txt itself that lets the Amiga write there: dtoverlay=emmc,unit0=rw on a Pi 4 (a tester's 3.2 card on a Pi 4 has it), dtoverlay=sdhc,unit0=rw on a Pi 3, each on a line of its own. Prepare doesn't add these - add them on a PC. * A game or demo stutters or looks wrong: in a Shell, run C:rgb2rtg >RAM:report.txt and C:rgb2rtg TRACE >RAM:trace.txt right after it, and send us both along with the name of the game or demo. CREDITS AND LICENCES -------------------- RGB2RTG by Astair86, made for the Amiga community. It builds on AGA-PISTORM (also mine): its AGA chipset core draws the picture. * Emu68 by Michal Schulz (MPL-2.0) - https://github.com/michalsc/Emu68 - with CrypticalCode0, Marcel Verdaasdonk, Marlon Beijer, Michael Rasmussen, Lukasz Winczura (Rondoval), captain-amygdala, Christophe Thibault, Adam Polkosnik, Michael Pye and Tom-Cat. RGB2RTG is not part of Emu68, and not made, endorsed or supported by Michal Schulz or the Emu68 project: please send anything about the RGB2RTG kernel to us, not to them. The RGB2RTG kernel is Emu68 1.1.0-beta.1 (git 0ba3a89) with RGB2RTG added. RGB2RTG's source and its patch are in Source/; the complete Emu68 source it is built from is RGB2RTG-0.5-emu68-src.tar.gz (the Emu68 part has not changed since 0.5; published again with 0.6). Emu68's own files keep their MPL-2.0 notices; the kernel as a whole - Emu68 with RGB2RTG's GPL-2.0 code - is distributed under the GPL-2.0, which the MPL-2.0 allows (its section 3.3). * Capstone (its M68K part is Musashi), libdeflate, and code from the PiStorm project, BSD, AROS and the PowerPC ROM, built into Emu68 - their licences and notices are in Licenses/. * VideoCore.card, the RTG driver, by Michal Schulz (Emu68-tools, MPL-2.0), with changes by Astair86 - the source of this build is in Source/. * The chipset core contains code from UAE and WinUAE - by Bernd Schmidt, Alessandro Bissacco, Toni Wilen and the UAE contributors (GPL) - https://www.winuae.net: its blitter and copper are UAE's, and so are parts of its bitplane, sprite and collision code, copied or translated into C; much of it is the older UAE code kept in E-UAE. What comes from where, and their notices, are in Licenses/UAE-WinUAE-notice.txt. * Sound on HDMI (kernel/rgb_hdmi.c, taken over from AGA-PISTORM's arm/aga_hdmi.c) follows the Linux kernel's VC4 HDMI audio driver, drivers/gpu/drm/vc4/vc4_hdmi.c from the Raspberry Pi kernel (GPL-2.0-only; Copyright (C) 2015 Broadcom, (c) 2014 The Linux Foundation, (C) 2013 Red Hat): its start, stop and register values, rewritten for Emu68 with a DMA ring of its own. arczi84's emu68-hdmi-audio showed first that HDMI sound can work under Emu68 - thank you! * The PiStorm by Claude Schwarz, and the PiStorm community; the PiStorm600 by Lemaru - https://github.com/LemaruX/PiStorm600 * CaffeineOS. RGB2RTG itself is GPL-2.0 (Licenses/GPL-2.0.txt). NOTICE! USE IT AT YOUR OWN RISK --------------------------------- This is still a young project. It changes how your Amiga boots (config.txt on the SD card), so please make a backup first. It comes with no warranty of any kind (GPL-2.0, sections 11 and 12). AI -- AI was moderately used for debugging this since i have previously made the tools anyway. It is what it is, if you dont like it dont use it! ROADMAP ------- * The A1200's sound filters for the sound on HDMI (its low-pass and the one the power LED switches). * Super Stardust: patches on HDMI during explosions. * A colour depth setting in VideoCore.card. * HDMI timing with room above 50 Hz, for demo parts at 50.08 Hz. * The 31 kHz modes: from a test to on by default, and their interlaced ones woven. * 9 Fingers and Pang (WHDLoad) without setting the JIT by hand (the careful mode doesn't notice their code rewriting yet). * The remaining microstutters in some demos (Starstruck). * An option in the CaffeineOS toolbar. * HDMI sync on the Pi 3 (it starts off there - not tried yet). Discord server with awesome ppl can be found here: https://discord.gg/4EqRdtVAn Pistorm here: https://discord.gg/HCDyDJ897 Very special thanks to Angelclaww (The Diplomat) , katzazakis, Shaytan and many others for testing stuff out!