Pretty Good Solitaire shootout: Wine vs. Crossover

Holly Bostick motub at planet.nl
Fri Feb 18 10:33:35 CST 2005


Hi,

This application is not in the database, so I started testing prior to
adding it and (most likely) maintaining it.

Pretty Good Solitaire (PGS) is a Solitaire game compilation; the benefit
over native applications is the huge number of Solitaire variants
available (the current version has 610 Solitaire games; previous
versions have at least 500). Pysol and Aisle Riot don't even come close,
especially if you have a favorite variant that is only found in this
compilation.

The demo of the current version (10.2.0) is available at

http://www.goodsol.com/downloads/gdsoltb.html

Previous versions (7.2.0, 8.11, 9.2.0) are available at

http://www.goodsol.com/downloadpre.html

I also have version 9.1.0, which is an old "previous version" no longer
available on the main site.

Wine: 20050217

Crossover: 4.1 Demo

Distribution: SuSE 9.2

Video: ATI binary drivers 8.10.19 under X.org 6.8

Cutting to the chase, the interesting thing here is that:

A) the setup runs better under Wine than Crossover (but runs fully in
both cases)

B) The game itself runs 99.9% perfectly under Crossover (only the
Help/Rules are not available) but *does not run at all* under Wine
(well, the splash screen shows, but then the app crashes to desktop when
trying to open the games selection menu window).

I find this fascinating, so I did more tests; fuller information to
follow, but I'll ask my question now in the event you don't want to read
the rest of what will likely be a very long post:

What is the proper information to add to the appdb if the app runs under
Crossover but not Wine? Or should I not add the app at all at this time?
I'd feel pretty stupid suggesting that one buy CX to run a Solitaire 
game (even a great compilation such as this), but on the other hand, the 
app runs flawlessly under CX, which seems worthy of mention if a user 
does want to run it (since it does not run at all under Wine). Any 
suggestions would be appreciated.

But here's my test results, in case it will help you figure out what the
missing link is:

-----------------------------------------------------------

Installers:

The game (any version) ultimately installs fine under both Wine and
Crossover.

However, there are differences during install.

Wine does not produce any errors when running the installer (unless that
tiny, unreadable, and non-resizeable 2nd dialog box is meant to display
them), and all text (license and 'readme') is visible in the installer
dialogs.

Crossover produces duplicate error boxes when the first install screen
is extracting/loading (you hit OK on the first, then the duplicate
appears, then you hit OK and the install proceeds with no further error
dialogs), and no license or 'readme' text is visible in the installer
dialogs provided for this purpose.

The error is as follows:

Access violation at address  {version-dependent, specific addresses follow}

Read of address 00000000

In version 720 the address is 417930BA

In version 8.11 the address is 4173C0BA

In version 9.20 the address is also 4173C0BA

In version 10.2 the address is 41B880BA


Neither Wine nor CX can extract the program icon. However, at some point
previous, CX was able to get the icon from at least one version of PGS,
as I have a saved icon from PGS 500 (which is version 8.11) that I
stored some time ago when I tested this install on an acquaintance's
machine while housesitting. Unfortunately, I don't remember what version
of CX this person had (dammit). I certainly don't get an icon extracted
(even from 8.11) now, with 4.1 Demo, and iirc, no attempted install of 
later versions of PGS successfully extracted the application icon on the
acquaintance's machine (which is likely why I saved the one icon I did
get when I cleaned up prior to losing access to the machine).


CX creates a full Programs menu folder, containing the application, the
website link, and the uninstaller; Wine does not seem to create a
Programs menu at all (but this could be a SuSE menu issue). CX creates
the desktop icon (using the default CX icon, since the program icon 
could not be extracted); Wine does not (but this could be because the CX 
icon is already there and cannot be overwritten).

But in both cases, the application is installed.

CX: Using one of the CX icons runs the game (any version) perfectly
using CX; the splash screen is displayed, and for the first run, the
"add player" dialog is displayed and works, for an unregistered first
run, the registration dialog is correctly shown and links on that screen
correctly open Firefox and display the URL.

A slight problem is that when I attempted to enter my registration code,
which I keep saved in a text file, using the internal right-click 
"Paste" operation crashed the program to desktop; but using Shift+Insert 
to paste the text worked fine.

Other than the fact that the Help is not available (nothing happens if
you click the "Help" or "Rules" buttons in the main menu or an
individual game, which kinda sucks if you want to try a new game but
don't know the rules), this application has only a couple of very minor
problems, and can be said to be Gold. All text is visible, all options
are readable, useable and work properly; I even followed the link from
the Options screen and successfully downloaded and installed additional
card sets.

The only minor issues other than those already mentioned are things I 
noticed when using earlier PGS versions in the past, but may no longer 
be relevant with version 10.2.0 (not yet tested):

1) game saving on exit did not quite work properly if you exit
immediately after winning a game (on the reward screen, choose exit
immediately, or choose New Game, don't do anything, and exit
immediately); when you reopen PGS and select the same game variant as
you had just been playing, you don't get a 'clean' new game, but instead
the game autoplays to some (indeterminate) point in a previous game you
had played. If, however, you win a game, select 'New Game', make one
move, then exit, when you reopen and select the same game type, the same
game # will open, and your one move will be played automatically
(because it was properly saved on exit). *This issue no longer appears 
in version 10.2.0.*

2) Opening Thunderbird (seems to be specific to T-bird, but did not test 
extensively because I did not realize this seems PGS version-specific) 
caused a horrendous amount of flickering (non-critical, as it did not 
hurt the program's function in any way, it was just insanely annoying), 
but this seems to have been related to PGS versions 9.10 and below; I am 
not seeing this with 10.2 at all, so it's something I'd have to test as 
a version issue for the appdb.

3) Sometimes (possibly when the system was under relatively heavy load 
in some way), drawing of the game screen was imperfect; some "later" 
cards on the table (meaning cards visible but not playable at the moment 
due to game rules) were only partially drawn (not critical, since the 
cards were not playable). The cards were visible (meaning that the space 
for the partially or not drawn card was clearly "used" by an object not 
completely visible), and the card itself was present and could be played 
when it became playable according to the game rules. Playing the card 
would also cause it to be drawn properly, but the space where it had 
been was not necessarily redrawn (so that the card under it, which 
should have become completely visible when the partially-drawn card was 
moved, had a "bite" taken out of it). This was a non-critical error 
which could be resolved by using the "Restart" button to redraw the 
table. Since I don't know what caused this in the first place, I can't 
test whether it still happens. For all I know, it could be something 
fixed in the ATI drivers.

The point being that Codeweavers could put this on their list of 
supported apps, insofar as it runs more than well enough to be 
considered perfect.

Wine, though, is a different story.

The application does not run. The splash screen is displayed, for what 
is the "normal" amount of time (~ 5 seconds), but when the splash screen 
disappears, the game selection menu does not appear in its place (you're 
returned to the console prompt). So the app fails cleanly, but the 
output is horrific (because its over 6000 lines long).

Here's the start and end of it:


[holly at SuSE: ~/games/wine/goodsol] 08:27  $ wine goodsol.exe
fixme:ver:VERSION_GetLinkedDllVersion Unknown EXE OS version 4.0, please 
report !!
fixme:ole:CoRegisterMessageFilter stub
fixme:ole:OleLoadPictureEx 
(0x413825fc,103393,1,{7bf80980-bf32-101a-8bbb-00aa00300cab},x=0,y=0,f=0,0x406cf82c), 
partially implemented.
fixme:ole:OLEPictureImpl_Construct Unsupported type 3
fixme:ole:OLEPictureImpl_get_hPal (0x403a1998)->(0x406cf770): stub
fixme:ole:OleLoadPictureEx 
(0x41383efc,4158,0,{7bf80980-bf32-101a-8bbb-00aa00300cab},x=0,y=0,f=0,0x406cf82c), 
partially implemented.
fixme:ole:OleLoadPictureEx 
(0x41383efc,0,0,{7bf80980-bf32-101a-8bbb-00aa00300cab},x=32,y=32,f=0,0x403d9138), 
partially implemented.
fixme:ole:OleLoadPictureEx 
(0x41383efc,0,0,{7bf80980-bf32-101a-8bbb-00aa00300cab},x=32,y=32,f=0,0x403d91b0), 
partially implemented.
fixme:ole:OleLoadPictureEx 
(0x41383efc,0,0,{7bf80980-bf32-101a-8bbb-00aa00300cab},x=32,y=32,f=0,0x403d8908), 
partially implemented.
fixme:ole:OleLoadPictureEx 
(0x41383efc,0,0,{7bf80980-bf32-101a-8bbb-00aa00300cab},x=32,y=32,f=0,0x403d8980), 
partially implemented.
fixme:ole:OleLoadPictureEx 
(0x41383efc,0,0,{7bf80980-bf32-101a-8bbb-00aa00300cab},x=32,y=32,f=0,0x403d89f8), 
partially implemented.
fixme:ole:OleLoadPictureEx 
(0x41383efc,0,0,{7bf80980-bf32-101a-8bbb-00aa00300cab},x=32,y=32,f=0,0x403d8a70), 
partially implemented.
fixme:ole:OleLoadPictureEx 
(0x41383efc,0,0,{7bf80980-bf32-101a-8bbb-00aa00300cab},x=32,y=32,f=0,0x403d8ae8), 
partially implemented.
fixme:ole:OleLoadPictureEx 
(0x41383efc,0,0,{7bf80980-bf32-101a-8bbb-00aa00300cab},x=32,y=32,f=0,0x403da2a8), 
partially implemented.
fixme:ole:OleLoadPictureEx 
(0x41383efc,0,0,{7bf80980-bf32-101a-8bbb-00aa00300cab},x=32,y=32,f=0,0x403da320), 
partially implemented.
fixme:ole:OleLoadPictureEx 
(0x41383efc,0,0,{7bf80980-bf32-101a-8bbb-00aa00300cab},x=32,y=32,f=0,0x403da398), 
partially implemented.
fixme:ole:OleLoadPictureEx 
(0x41383efc,0,0,{7bf80980-bf32-101a-8bbb-00aa00300cab},x=32,y=32,f=0,0x403da410), 
partially implemented.
fixme:ole:OleLoadPictureEx 
(0x41383efc,0,0,{7bf80980-bf32-101a-8bbb-00aa00300cab},x=32,y=32,f=0,0x403da488), 
partially implemented.
fixme:ole:OleLoadPictureEx 
(0x41383efc,0,0,{7bf80980-bf32-101a-8bbb-00aa00300cab},x=32,y=32,f=0,0x403da500), 
partially implemented.
fixme:ole:OleLoadPictureEx 
(0x41383efc,0,0,{7bf80980-bf32-101a-8bbb-00aa00300cab},x=32,y=32,f=0,0x403da578), 
partially implemented.
fixme:ole:OleLoadPictureEx 
(0x41383efc,0,0,{7bf80980-bf32-101a-8bbb-00aa00300cab},x=32,y=32,f=0,0x403da5f0), 
partially implemented.
fixme:ole:OleLoadPictureEx 
(0x41383efc,0,0,{7bf80980-bf32-101a-8bbb-00aa00300cab},x=32,y=32,f=0,0x403da668), 
partially implemented.
fixme:ole:OleLoadPictureEx 
(0x41383efc,0,0,{7bf80980-bf32-101a-8bbb-00aa00300cab},x=32,y=32,f=0,0x403da6e0), 
partially implemented.
fixme:ole:OleLoadPictureEx 
(0x41383efc,0,0,{7bf80980-bf32-101a-8bbb-00aa00300cab},x=32,y=32,f=0,0x403da758), 
partially implemented.
fixme:ole:OleLoadPictureEx 
(0x41383efc,0,0,{7bf80980-bf32-101a-8bbb-00aa00300cab},x=32,y=32,f=0,0x403da7d0), 
partially implemented.
fixme:ole:OleLoadPictureEx 
(0x41383efc,0,0,{7bf80980-bf32-101a-8bbb-00aa00300cab},x=32,y=32,f=0,0x403da848), 
partially implemented.
fixme:ole:OleLoadPictureEx 
(0x41383efc,0,0,{7bf80980-bf32-101a-8bbb-00aa00300cab},x=32,y=32,f=0,0x403da8c0), 
partially implemented.
fixme:ole:SPCF_CreateInstance 
(0x40a50d00,(nil),{7bf80980-bf32-101a-8bbb-00aa00300cab},0x403f1ec0), 
creating stdpic with PICTYPE_NONE.
fixme:ole:OLEPictureImpl_Load Could only read 67468 of 138330 bytes in 
no-header case?
fixme:ole:OLEPictureImpl_Load Unknown magic 746c, 67468 read bytes:
6c 74 00 00 00 00 00 00 6c 74
00 00 00 00 00 00 ff 03 3e 00
00 00 04 08 00 6c 62 6c 53 74
61 74 73 00 01 04 09 00 00 80
05 e0 10 78 00 9f 06 cf 03 12
15 00 1f 00 25 01 00 00 00 90
01 44 42 01 00 0d 4d 53 20 53
61 6e 73 20 53 65 72 69 66 ff
03 43 00 00 00 05 08 00 6c 62
6c 54 79 70 65 73 00 01 03 02
00 00 80 04 09 00 00 80 05 d0
02 d0 02 c7 0b ef 01 12 13 00
1f 00 25 01 00 00 00 90 01 44
42 01 00 0d 4d 53 20 53 61 6e
73 20 53 65 72 69 66 ff 03 46
00 00 00 06 0b 00 6c 62 6c 47
61 6d 65 4e 61 6d 65 00 01 03
<snip of over 6000 lines of this>
6d 6e 75 54 72 61 79 45 78 69
74 00 13 03 05 00 45 26 78 69
74 00 ff 03 03 04
fixme:ole:OLEPictureImpl_Destroy Unsupported type 0 - unable to delete
fixme:ole:CoRegisterMessageFilter stub
[holly at SuSE: ~/games/wine/goodsol] 08:28  $

Now, I can't imagine what insanely proprietary (VB?) code a bloody 
Solitaire app could use that is completely supported by CX, and 
completely unsupported by Wine, but maybe one of you can.

If there is any further debugging that would be of use, please specify 
what channels you want, and I'll (figure out how to) do it.

I think I'll leave this off the appdb for the time being, but any 
suggestions that would help me include it would be welcome (since I 
guess I must be willing to maintain it, having done so much work already 
;-) ).

Thanks for your time,
Holly



More information about the wine-devel mailing list