When you no longer expect miracles and everything starts to look boring, sometimes there is thing which may surprise you:
For those who may not know, back in past, the Polish demo group Potion created one of the best Amiga intros ever made called "Planet Potion", which won the Mekka Symposium 2002 in the Amiga 64k Intro competition.
It was originally written for WarpOS (a 68k executable utilizing PPC through powerpc.library) and Warp3D (Warp3DPPC.library in this case) centered on B/CVision-based graphics cards (as some of us think before).
For a long time, the only way to run it was on a real Amiga 1200 or Amiga 4000 equipped with a PPC accelerator and a BVision or CVision graphics card. At least, back in the day, I was only able to run it on my A1200 with a BVision.
Now I have patched it so that any AmigaOS 4 user can run it just like any other demo. It simply works and bring some improvements.
See video in action on my X5000 with RadeonRX and NovaBridge:
2). A working Warp3D setup: Nova + NovaBridge for RadeonHD/RadeonRX, or the R200 Warp3D driver for older Radeon 9xxx cards.
Keep in mind this is NOT an official release from Potion. It is the original version, disassembled and patched to run natively on AmigaOS 4, with several additional improvements and fixes.
## What was improved and fixed:
1. Hunk/BSS/Data relocation fix: The original intro expected additional hunk data in a way that caused problems on OS4/WarpOS. Making some additiona hunk copies into extended bss space with redirection pointers fixes major crash/memory layout issue.
2. r10 preservation fix: Some scene wrappers relied on the incoming r10 register holding the scene pointer: calls made inside those wrappers could clobber r10 on OS4/WarpOS, so few of them were fixed to save and restore r10 through stack.
3. Embedded native OS4 dbplayer.library
The original intro contained an embedded 68k version of dbplayer.library, which was unpacked and executed from RAM. It has been replaced with a native OS4 version built specifically for this patch: instead using "blocking" low-level AHI interfaces, it now uses a high-level device interface approach. The library is also used as a place for native OS4 code implementing the additional features added to the demo, see below.
4. Compositing and window mode support.
noargs : original fullscreen 640x480 mode. -win : centered 640x480 window -comp : The intro detects the current Workbench screen size and opens a matching screen. -win -comp: Open compositing resiazable window in center.
5. Native OS4 input handling
Added RMB and ESC support for exiting in fullscreen mode. Added ESC and Close Gadget handling in window mode. Iconify gadget when in window mode (be it original or compositing based ones) Added F11 (and mirrored F10) for switching between fullscreen and window mode (works only when running in compositing mode).
6. Fog rendering fix
Fixed a fog-related issue that caused scenes 11 through 22 to render incorrectly.
7. Fixed W3D_DrawLineStrip diffrences between Bvision/Radeon200/NovaBridge
The original intro uses W3D_Lines.linewidth set to 0.0f in some scenes. R200 and BVision/CVision render such lines as if they were 1.0f wide, while NovaBridge drops them completely and renders nothing. The patch changes the value to 1.0f. This causes no issues on drivers where the original behaviour already worked, while fixing rendering differences on other drivers.
Tested on:
* Pegasos II + Radeon 9250 (FE Update 3) via original r200 driver * Pegasos II + Radeon RX (via PCI-to-PCIe bridge, FE Update 3) via NovaBridge * AmigaOne X1000 + Radeon HD Oland (FE Update 2) via NovaBridge * AmigaOne X1000 + Radeon HD Verde (FE Update 2) via NovaBridge * AmigaOne X5000 + RadeonRX Polaris 11 (FE Update 3) via NovaBridge * Sam460 + Radeon560 (FE Update 2) via NovaBridge