Thursday, April 11, 2019

Farewell, our dear friend

by on Thursday, April 11, 2019
Yesterday, in the late evening, I've been informed that our dear friend Stefano Buonocore, artist, teacher, game designer and sincere lover of anything related to Commodore and Amiga, has passed away. This news made me incredibly sad. Stefano was my age, and one of those dreamers who never stopped hoping for the rebirth of Commodore and Amiga. He had always been in contact with many key people of our hystoric platform, from Petro Tyschtschenko to David Pleasance, from Bil Herd to David Haynie, from Trevor Dickinson to Michele Battilana, from the Frieden brothers to Massimo Canigiani and, by the way, he's been in contact with me, too (and this makes me the proud member of a elite). From time to time, I got his messages on my PC and my smartphone. He always had ideas to share about Commodore smartphones, about new systems, about improvements I could do to Icaros. He did every effort he could, to make all the people above speaking each other, because he shared the dream of a new Commodore rising from the dead, and fought for it. In the recent years, he worked on a toon-like point & click adventure called "The secred of Middle City", heavily inspired by classics of the past like Monkey Island and Simon the Sorcerer. The game, mainly written with Hollywood, is available on Steam for Windows, but also for Mac, AmigaOS 4.1 and MorphOS. An AROS version was "under consideration" but, as you may easily guess, it won't ever happen. Rest in peace, Stefano, I'd never considered missing you so soon.

PS: Update about AROS' Middle City:

Wednesday, April 10, 2019

New download page

by on Wednesday, April 10, 2019
Icaros Desktop website has now a completely new download page. The older one came from several copy/paste operations done on different versions of the site, and the more I edited it, the more it got difficult to mantain. For this reason, I decided it was time to get rid of older links, and place them on a different page (which will get some love later). From now on, the download page will keep only the recent and important stuff. It should now look much more professional and easier to read.

> Our new download page

> New page with older releases

Tuesday, April 9, 2019

Icaros Desktop 2.2.7 has been released

by on Tuesday, April 09, 2019
A new version of Icaros Desktop is now available for download. This new release includes a work-in-progress version of the VMware SGVA driver, an improved version of EasyRPG Player and many updates to current applications here and there (please see the "new from" section for a full list). As already explained, the VMware SVGA driver is not activated by default on this release of Icaros Desktop. VMware users, however, will have the option to enable it after installation onto the hard drive. If you're upgrading Icaros Desktop from an older version to 2.2.7, you can enable VMware SVGA driver by copying VMware related files from Storage/Monitors to Devs/Monitors. You will then need to reboot your system and choose the default "Icaros Desktop" boot option in the initial GRUB menu. If you are not satisfied by the driver, you can revert to the usual VESA driver either removing the VMware files from Devs/Monitors, or - temporarily - by choosing one of the VESA modes in GRUB's "Advanced options for Icaros Desktop" menu. For your pleasure, we added two more resolutions that surely work with VMware: 1366x768 and 1920x1080 pixels. Current VMware SVGA driver is an usable state, but it is still slow in many operations and has some quirks that must still be addressed, like the pointer randomly vanishing and some artifacts being left by screen refresh. It allows screen dragging and changing resolution from Prefs/ScreenMode, though, and it's a mandatory choice if you wish to use Icaros Desktop at highest 2K and 4K resolutions (which are not supported by VESA driver).
Icaros Desktop 2.2.7 allows user to change volume T: position from RAM to system drive. It can be useful if you're running the system from a SSD drive and you wish to save as much RAM as possible for running tasks. Choosing to move T: from RAM: to Sys: won't completely remove T from RAM, because some poorly-addressing programs may still pretend to write something to RAM:T/. Icaros Desktop will delete SYS:T/ contents at every boot and ADD also RAM:T/ to T: assign. You can select what drive to use for T: in Prefs/Icaros Settings. Default value for this option is, obviously, the RAM drive. Icaros 2.2.7 adds Digger to games available in the Live! edition and brings ViewLHA 0.2 to AROS x86. ViewLHA is a little CLI tool written by Mats Peterson which was originally intended to handle a single image file included in a same-named LHA archive (a quite common habit on unexpanded classic Amiga systems). While compiling it to AROS, I decided to extend its functionality to be more general and more tailored to current Icaros needs. So we can now enter a command like this:

ViewLHA pictures:my_archive.lha

to immediately extract that LHA archive in T: and browse it with ZuneView. A "Browse for images" option as been added as well in Magellan for LHA archives, however, due to a silly mistake I did, it appears for other archive types too. Sorry for that, it will be fixed later: Mats is still working on it (I have currently ported v0.7 to AROS) and I am still following his improvements.

New from Icaros Desktop 2.2.6

- fix: replaced SANAutil from system/netowrk/AROSTCP/C
  with the one in Extras/Networking/Utils
- did the same also for NTPSync and SetPrism2Defaults
- removed Extras/Networking/Utils, not needed anymore
- fixed a typo in Create Installation Pendrive script (makedit->makedir)
- Updated TimeKeeper to v1.07 and moved from Prefs to Tools/Commodities
- updated TimeKeeper icon adding 1.07+ tooltypes
- added manual for LodePaint
- updated vmwaresvga.hidd
- added S:testvmware script to detect VMware SVGA and enable its driver
- added PCX datatype
- updated ZXSCR datatype to latest version
- updated MUIRoyale Hollywood Plugin to support ESC-A image embedding
- updated vim to latest release
- added HydraCastle to extras/Games
- updated fpc with a more recent build
- updated EasyRPG-Player to version 0.6.0 (1)
- updated EasyRPG-launcher to reflect new version (removed --window parameter)
- added Digger to extras/Games
- updated Exutil to latest version
- added option to change T: position to prefs/Icaros Settings
- added ViewLHA (built from sources by Mats Peterson) with modified script
+ added "Browse for images" menu option for LHA files
- updated user manual to reflect new additions

(1) Save games from former version are not compatible. You may need to restart your games after update.

Thursday, March 21, 2019

Adapting ViewLHA to run on Icaros /2

by on Thursday, March 21, 2019
Today I decided to turn back to yesterday's ViewLHA/vlha combo, to refine their behaviour. There were, in fact, some little quirks I could simply not live with. For starter, the fact that the resulting drawer in T: would include the relative path you used for the viewlha command. For instance, if you wanted to explore images included in the 'test.lha' archive, stored in sys:MyWorkspace/Pictures, and you gave a command like this one from a different directory:

AROS:> viewlha MyWorkspace/Pictures/test.lha

You'd get the contents of test.lha in the following directory, T:MyWorkspace/Pictures/test.lha/. Why? That's logical. Please let me recall yesterday syntax for the LHA command:

lha -xw=t:{fname} "{fname}"

if {fname} is "MyWorkspace/Pictures/test.lha", LHA will recreate that path when trying to create a directory with that (whole) name. I needed to separate the file name from its path and, luckily, the LIST command can do that quite easily. Icaros has also other tools to do that, but LIST should be easier to use also on other AROS implementations. The following command places the file name part of {fname} to a new temporary text file called T:arcname.

List LFORMAT="%N" "{fname}" >t:arcname

Now, let's change the LHA and ZuneView lines to reflect this change:

lha -xw=t:${T:arcname} "{fname}" >NIL:
sys:utilities/zuneview/zuneview "t:${T:arcname}" >NIL:

...and we're done! This issue is solved. The current vlha script is now like this:

.key fname/a
.BRA {
.KET }

; let's separate archive name from its path
List LFORMAT="%N" "{fname}" >t:arcnam

;View a graphics file compressed with LhA
lha -xw=t:${T:arcname} "{fname}" >NIL:
sys:utilities/zuneview/zuneview "t:${T:arcname}" >NIL

; cleaning T: from temporary files
delete "T:${t:arcname}" ALL FORCE >NIL:
delete t:arcname >NIL:

(it does not handle archives with spaces is name, but I have already reported this to Mats, since it seems to be ViewLHA related).

Wednesday, March 20, 2019

Adapting ViewLHA to run on Icaros

by on Wednesday, March 20, 2019
Some days ago, fellow Amiga user Mats Peterson released the first version of his ViewLHA tool on Aminet. The program allows user to extract an image included in a LHA archive in RAM:T and show it with PPShow. His tool was meant to run on classic Amigas only and it was compiled for M68K processors. However, he nicely included also the C source in its archive, so I could try to compile it on Icaros Desktop as well, using GCC. The build process was really straightforward, I just needed to delete the M68K executable and enter this command in a shell, from the right directory:

gcc -o ViewLHA viewlha.c

The executable itself, however, is just a kickstarter for the real actor here: a script called 'vlha' that must be placed in S. This script is written for plain old AmigaOS 2, with a syntax for LHA which is very different from the one accepted by our version.

.key fname/a
;View a graphics file compressed with LhA
lha >NIL: -X x "<fname>" "<fname>" ram:t/
PPShow >NIL: "ram:t/<fname>"
delete >NIL: "ram:t/<fname>"

There are many issues here. First of all, simply using <fname> to accept a parameter wouldn't work on an AROS script. I had to modify the first line adding this:

.key fname/a
.BRA {
.KET }

then  all <fname> occurriencies had been replaced with more friendly {fname}.

Second issue, our version of LHA neither accepts the -X switch, which basically allows to extract a file skipping its MS/DOS extension, nor can be used this way to decompress anything into the RAM:T drawer. So I had to find the proper way to do at least the latter action. About the former, I have to open a little chapter on its own. ViewLHA was originally meant to fullfit a very specific, very amigaish need: opening a single image compressed into a single LHA archive, as like as if it was a substitute for other real-time compressing tools, like PowerPacker on the Amiga or NTFS compression on Windows. Since on Amiga we don't need extensions at all in file names, the image would not have any, and the archive should have had a the same name of the image, with the .lha suffix. For instance, a command like:

ViewLHA pippo.lha

Would have opened with PPShow a image called "pippo", included in an archive called "pippo.lha" by temporarily store it in RAM:T. Although many people use LHA in a similar way to compress .mod files and distribute them on Aminet, single-file LHA archives are quite uncommon, specially for images. Moreover, AROS and Icaros are "nearer" to the PC world than classic Amiga computer ever did, so the use of .extensions in names is really common. I had to deal with these differences. My solution for the LHA line is the following:

lha -xw=t:{fname} "{fname}" >NIL:

-xw tells LHA to decompress the archive "{fname}" in the t:{fname} directory. You may notice the first instance is not included in double quotes, fact is that our LHA command does not like using them in that place. This might lead to issues with archives with spaces in their name, but frankly speaking I left this potential issue for a later time. Our pippo.lha contents, for instance, would be expanded in the dynamically created t:pippo drawer. Oddingly enough, the >NIL: redirector does not seem to work with LHA, which continues writing its output messages on stdout. I'll see later if another LHA option allows to shut its mouth completely.

Third issue, as far as I know we don't have PPShow for AROS. But this is really not an issue, since we have a gem called ZuneView which integrates a directory browser:

sys:utilities/zuneview/zuneview "t:{fname}" >NIL:

Obviously, once we have seen all images, we have to delete the temporary directory:

delete "t:{fname}" ALL FORCE

Was this enough? Not really. Our LHA produces archives with a slightly different filetype tag than the one used by Mats. For this reason, almost every archive I created for testing purpose wasn't recognized as a LHA archive by his tool. Luckily Mats is a very smart guy: not only he provided the sources, not only gave me permission to modify, adapt and distribute his scripts as I wished, but he also provided me the best possible collaboration. When he told me that «The modification to the signature checking is just a matter of checking for '-lh' at offset 2 in the file rather than '-lh5-'», I edited the viewlha.c file to replace "if (strncmp(buf + 2, "-lh5-", 5))" with "if (strncmp(buf + 2, "-lh", 3))", rebuilt the executable and, tah dah... works like a charm!

Mats already promised enhancements to his program, like the ability to use wildcards in the command line and support for multiple file. I will follow his path as much as I can, but I already consider this result quite functional.

There's now a follow-up to this story!

Tomorrow, or later, I will also explain why I decided to replace the original 'ram:T/' reference with a simple T:, since it is another little option I decided to add to Icaros...

Tuesday, March 12, 2019

Enabling VMware SVGA driver in Icaros 2.2.7

by on Tuesday, March 12, 2019
Work on Icaros 2.2.7 continues. You know we finally got a driver for VMware SVGA (and our supporters already got the chance to test it) but, in the next distribution release, it won't be enabled by default. We felt, in fact, it was still too early to be 'in production': speed issues and graphic artifacts are still present so, for now, VESA modes should be a better default choice for VMware users. If you wish to test the new driver, and use wider resolutions like 2K and 4K, however, you will need to use the VMware driver, since VESA modes can't handle them. The following video shows how you're supposed to enable the VMware SVGA driver with Icaros 2.2.7.

I'd love to spend a couple of words about the topic "how can Icaros understand it's running under VMware?". It's a good question, specially for an almost-completely-dumb guy like me about coding. There was simply no way, for me, to code something that would be able to probe the video card, so I needed to check among already available tools on AROS. PCItool can read the system configuration and list PCI components, however I could not run it with a parameter to save the config somewhere, so I needed something else.

I recalled there is a 'Tests' directory in AROS nightly builds (Extras/Tests on Icaros) with many useful CLI programs inside. There MUST have been something useful to me, and I found it very soon: a program called pcilist in Tests/Misc. This little gem produces a bare list of connected PCI devices in their basic vendorid:productid form so, assuming that 15AD is VMware's vendor ID and 0405 is VMware SVGA II card product ID, I only had to grep the list for the string '15AD:0405': if it occurs, the card is present, and the new driver is suitable. Icaros 2.2.7 will have pcilist in C and a new script in S called 'testvmware' to check wether the card is available or not. If you wish to reproduce this experiment on your current installation, just:

1. copy pcilist from extras:Tests/Misc to sys:C
2. be sure you've got grep in Development/bin (or copy it to sys:C as well)
3. open a shell and create a script like the following:

pcilist >t:pci
grep -c "15AD:0405" t:pci >t:cnt

if ${t:cnt} GT 0
  requestchoice "YES!" "VMware SVGA II Detected" "Continue" >nil:
requestchoice "NO!" "VMware SVGA II NOT Detected" "Continue" >nil:

delete t:cnt >NIL:
delete t:pci >NIL: