[[Image(source:www/img2oric/real-oric.jpeg,align=right)]] = Oric Atmos graphics using libpipi = [wiki:libpipi] can load and save images in the Oric screen format. The [http://www.defence-force.org/computing/oric/gallery/index.htm Oric screen format] is one of the most twisted standards and very little artwork exists for this vintage computer. It was therefore the perfect challenge for the Caca Labs image processing team. The graphical part of the Oric screen has 240×200 pixels and can only display 8 different colours (black, blue, red, green, cyan, magenta, yellow and white). Each horizontal group of 6 pixels can only use two different colours: the foreground and the background colours. The background ''or'' the foreground colour may also be changed (one at a time), but while doing so the next 6 pixels cannot be chosen: they will use the background colour instead. Finally, a special bit may be activated to display the current group of pixels in reverse video. libpipi is pretty slow: around 2 minutes to process an image on a modern computer at full quality. It is certainly possible to make it run faster, but I am not aware of trivial ways to do so, except by reducing the computation depth (hence reducing the quality). == Downloads == There used to be a program called `img2oric` to do this task, but libpipi’s `pipi` utility is now far more powerful. Windows executable (28 Sep 2008 snapshot): [/files/libpipi/oric/pipi.exe pipi.exe]. For those interested, the relevant source code is in [/browser/libpipi/trunk/pipi/codec/oric.c oric.c]. You can also download a [/export/2848/www/img2oric/OUTPUT.TAP sample OUTPUT.TAP] file as generated by [wiki:libpipi]. To load it into an Oric computer, or an emulator such as `xeuphoric`, just type '''`HIRES:CLOAD"OUTPUT"`''' and it will be immediately displayed. == Examples == Convert an Oric `.tap` file into a BMP: {{{ pipi screen.tap -o image.bmp }}} Convert a BMP file into an Oric `.tap` file: {{{ pipi image.bmp -o screen.tap }}} Convert a BMP file into an Oric `.tap` file, then reopen the `.tap` file and save it as another BMP: {{{ pipi image.bmp -o screen.tap screen.tap -o screen.bmp }}} Open a `.tap` file, apply a 3×3 Gaussian blur filter, and save it back to another `.tap` file: {{{ pipi input.tap --blur 3 -o output.tap }}} [[Image(source:www/img2oric/eatme.png)]] [[Image(source:www/img2oric/blur-eatme.png)]] Open a `.tap` file, rotate it 90-degree clockwise, and save it back to another `.tap` file: {{{ pipi input.tap --rotate270 -o output.tap }}} [[Image(source:www/img2oric/bb.png)]] [[Image(source:www/img2oric/rotate-bb.png)]] == Screenshots == These images show how libpipi performs. The results may not seem terribly clean, but they are probably better than anything that has been seen so far on an Oric computer. These first 4 images show the results on the same images than the ones on Dbug’s [http://www.defence-force.org/computing/oric/coding/annexe_3/pictconv/ PictConv] website, to illustrate the improvements over the traditional RGB separation technique. [[Image(source:www/img2oric/buffy.png)]] [[Image(source:www/img2oric/output-buffy.png)]] [[Image(source:www/img2oric/mire.png)]] [[Image(source:www/img2oric/output-mire.png)]] [[Image(source:www/img2oric/dog.png)]] [[Image(source:www/img2oric/output-dog.png)]] [[Image(source:www/img2oric/lena.png)]] [[Image(source:www/img2oric/output-lena.png)]] The following images show libpipi’s results with grayscale images and cartoon images. [[Image(source:www/img2oric/bufbw.png)]] [[Image(source:www/img2oric/output-bufbw.png)]] [[Image(source:www/img2oric/homer.png)]] [[Image(source:www/img2oric/output-homer.png)]] The following images use real Oric artwork, taken from the Buggy Boy and the VIP 4 demos: they are almost pixel-perfect. [[Image(source:www/img2oric/bb.png)]] [[Image(source:www/img2oric/output-bb.png)]] [[Image(source:www/img2oric/eatme.png)]] [[Image(source:www/img2oric/output-eatme.png)]] == Credits == The libpipi Oric codec was written by Sam Hocevar. Thanks to Jean-Yves Lamoureux, Mickaël Pointier, Robert Chéramy, André Chéramy and Fabrice Frances for their help, their work and the information they provided.