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.

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:

Wednesday, February 20, 2019

Beta of 2.2.7 with Vmware SVGA support on Patreon

by on Wednesday, February 20, 2019

As usual, in the middle of an update development, a restricted beta is made of Icaros Desktop is made available on Patreon, to let beta testers and supporters try it. This beta brings a recent build (not the latest one) of the anticipated VMware SVGA native driver, which basically allows using the virtual video card of VMware products like any other natively supported video card. As for now, these features are enabled:

- 2D
- screen dragging
- resolution selection with prefs/ScreenMode, up to 4K
- emulators, games and other SDL apps work

and there are still many quirks here and there

- pixel buzz when moving windows/screens
- slow screen refresh on SDL applications
- cursor sometimes disappear
- vmware player may crash

But, hey! That's a very good situation for a work-in-progress device driver! In this beta, the VMware driver has been enabled by default. This means that if you wish to run the VESA driver like in the past, VMware users should select the Advanced options for Icaros Desktop line in GRUB's menu, and then their favourite resolution. The Icaros Desktop manual explains how to make a GRUB selection permament, if you prefer. This new beta also adds the following:

- fix: replaced SANAutil from system/network/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 icon with 1.07+ tooltypes
- 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

Icaros 2.2.7 Early Beta is available to beta testers and supporters only (who are patrons pledging 15+ $/month).


Wednesday, February 6, 2019

Icaros Desktop 2.2.6 has been released

by on Wednesday, February 06, 2019

A new, exciting update for Icaros Desktop is now available for download. This time we made several great additions. First of all, the newer version of muimaster.library from Neil Cefferkey added support for ESC-A method of embedding images into strings, which basically allows rapagui-based applications to show images into buttons and other GUI gadgets. This is a feature coming from MUI 4.0 and the first practical advantage it brought is Icon Editor finally showing its real interface, as the author originally intended. Moreover, it's a little nice step towards a bigger compatibility among AROS and other Amiganoid systems, which should make developers life a little easier when writing/porting their applications. And the second addition we made is tailored exactly to them: how many times an application that was supposed to work, when launched, simply didn't? Where is the issue? Icaros Desktop can now record debug logs to help catching the bugs, or at least wrong interactions with the system. Did you stumble in a not-working option or in the sudden freeze of a program? Just start recording the log, launch the broken app and make it crash again, then send log to its author: he/she will have one more clue to fix the issue! But, obviously, there are some new applications as well. Digital camera users can now use a newer version of dcraw to edit or convert their RAW images, coders can now use a better version of VIM, digital music lovers can play and discover new mod files with ZuPaPlayer and AmiCast Player. But maybe the funniest addition of the month is EasyRPG Player, a great interpreter à la ScummVM for games created with RPG Maker 2000 and 2003, ported to AROS by Szilárd Biró. As usual, we also included two great games under kind permission of their authors, The Kidnapping of Princess Pri and Grimps: Squeaking of the Dead. The former is a classic 'japanese RPG adventure' you might play on a Super Famicom or a Sega Megadrive, with a funny plot and a lot of humour, and the latter is an amazing Pengo-meets-Bomberman puzzle game which requires a lot of imagination and strategy to solve all levels. But you can find dozens of games, on and other sites, which you can now play on AROS: you just need to download them and place the right files in the right drawers, as explained by Icaros 2.2.6 updated manual! Other little enhancements regard useability: as promised, the vic command is now graphical; we got a modified VMware SVGA driver which adds support to Full HD, 2K and 4K resolutions (please beware of the fact that this is still the same slow stub as before: you'll have to manually enable it as it always happened), and we added two lines in GRUB's advanced options to run Icaros Desktop in VESA mode at 1366x768 and 1920x1080 pixels, which will - unfortunately - work only if your VGA BIOS explicitly support them (VMware does, VirtualBox can be instructed todo so as well).

NOTE: the driver for VMware SVGA included with Icaros 2.2.6 is not at the current development stage. It's the first preliminary build from middle january. The current, more advanced one, is not publicly available yet. An alpha version will be included afterwards, during the 2.2.7 cycle.

Icon Editor now uses its orignal graphical buttons

New from Icaros Desktop 2.2.5

- added DCRaw 9.28 to C:
- deleted the obsolete (and wrong) 'dcdraw' drawer from Extras
- updated InstallerLG for i386 to latest version
- updated LibPNG to latest release
- updated MCC_NList to v1.25 for i386 and M68K
- added support to MUI4 ESC-A method to embed images
+ updated muimaster.library
+ updated rapagui in Libs/Hollywood
+ fix: Icon Editor now uses image buttons instead of text ones
- updated AmiCloud to v2.0-final
- updated webptools to latest version
+ included also the webptools development libraries
- updated VIM to latest release
- updated vic to output in a window
+ added to Magellan an option to show Icaros version
+ renamed the 'About' option in Magellan to 'About AROS'
- updated vmware svga hidd to use FHD, 4K and 1440p resolutions
- updated AROS kernel
- added EasyRPG Player to Extras/Emu
+ added the game 'The Kidnapping of Princess Pri'
+ added the game 'Grimps: Squeaking of the Dead'
- added a launcher script for EasyRPG Player in the same drawer
- updated AmiCast Player to latest release
- added Hex2 calculator to Extras/Applications
- added for scripts
- added generic script icon to user-executable scripts in S:
- added debug mode: logging can now be easily performed
+ added debugmode script in S:
+ added "Create debug log" option in Magellan's Icaros menu
+ modified default snoopy.prefs in Envarc: to log everything
- added ZupaPlayer to Extras/Multimedia
- added 1366x768 and 1920x1080 resolutions to VESA grub options(*)
- updated Icaros manual to reflect changes
- fixed a wrong reference in "Create Installation Pendrive" script

(*) notice: they might or might not work depending on your VGA BIOS

EasyRPG Player with included games

Farewell, Google+

by on Wednesday, February 06, 2019
Google+ is being decommissioned by Google and there's no need to keep the "share on Google+" button on our post pages anymore. I would like to thank anyone who shared Icaros Desktop news on this unlucky social network, because - in a way or another - they contributed to spread our news. Icaros Desktop has a page on Facebook, please follow it to stay in touch with us.

Wednesday, January 30, 2019

New VMware native driver for AROS!

by on Wednesday, January 30, 2019
This news, my friends, is really BIG. I had to keep my mouth shut for some days, but I can now announce something great for Icaros and AROS in general: we finally have a native SVGA driver for VMware! What does this mean? In a nutshell, that we can now abandon VESA modes under the most famous virtualisation platform and we will be able to change screen resolution with Prefs/ScreenMode. But that's not, obviously, the only advantage. We're getting 2D acceleration as well, with all the good things it can bring. Our hero, this time, is Claudio Russo, who was absolutely not satisfied with the old stub included with AROS and decided to give it a go. Users of Icaros 2.2.6 can already notice that the vmwaresvga.hidd included with the distribution is different from the one in AROS nightly builds: it enables Full HD, 2K and 4K resolutions. But this is just the first evidence of Claudio's work on the driver. Since then, development went on for some weeks, and now VMware SVGA driver allows screen dragging, many more screen resolutions and fast screen refresh. You can see it in action in the following video. There are some little and bigger quirks still to be fixed here and there, but we are confident that the new driver will be ready for debuct on Icaros Desktop 2.2.7, when it will be released. A very big thank you to Claudio Russo for his effort!