Solitaire (Microsoft, PC)
Split the article into two; one for original version and one for the Vista/7 version.
Solitaire is very likely the most played game in offices around the world.
Windows XP and below
A window in the game executable which allows you to type in a game number, like FreeCell...except Solitaire doesn't use game numbers in the retail version.
Also hidden in the game executable, but never appears. As above, it asks for the game number to be included with bug reports, which don't exist in the retail.
Unable to load bitmap; do you want to use a green background?
This message, which has been confirmed to be in the Win3, Win95/98/ME and XP versions, suggests that there was (or is) an option that allowed you to use a custom bitmap for the background image of the Solitaire window. It is unknown if there is a way to use or re-enable this feature.
Heck, I don't know Configure Solitaire for screen shots Force a win
These are leftover options from the debug menu. "Force a win" has a key combination assigned to it in the final game (Alt + Shift + 2), so you can still use it. However, you can re-add the other two to the menu, too. The first one does nothing, and the functionality of the second one has mostly been removed in the retail, so it just seems to freeze the game.
Interestingly, the first option is called "Hell, I don't know" in NT4, both in the debug and retail versions.
Print # of cards in each col
This string is left over from debugging, and not used in the retail game.
Back Options Bitmap
A set of options that are never used. Their purpose is unknown, but probably linked to the above-mentioned ability to set a bitmap as the background.
This special debug version was taken from the checked (aka "debug") version of NT4.
The debug menu is "hidden" between the Game and Help dropdown menus, just click there to reveal it.
- Set Game Number allows you to enter a specific game number to start a game. The debug version of Solitaire does use game numbers, and shows them prominently in the interface.
- The deck
- The revealed cards of the deck
- The suit stack
- Each of the row stacks
- Force Win, well, forces a win.
- Assert Failure triggers the Assertion Failure window, shown above. While a sol.dbg is in fact generated, the file is completely empty. Unlike what it says, the Exit Windows button does not induce a shutdown.
- Marquee Test appears to have no effect.
- Configure for screen shots hides the game number from the interface. This is probably there to hide this feature from screenshots released to the public.
Windows Vista and 7
As of Windows 7 SP1, the checked (Debug) version is identical to the free (Retail) version, except for the general unoptimized-ness and assert strings that all checked Windows components have in common.
By setting the internal g_bDebugEnabled variable to a nonzero value, various aids to debugging are enabled. This value isn't written to by the game, so it must be set manually.
Instead of the normal menu (resource 102), the game loads this alternative one (resource 103) from Solitaire.exe.mui. Most of it is self-explanatory, but "Toggle Deck Lock" appears to have no effect.
Holding Ctrl, Alt, and Shift while clicking on the deck causes only one card to be drawn regardless of the Draw Three options. It also enables you to move any card or bunch to any other stack irrespective of card color or number.
Holding F6 causes the the playfield to be rendered in gray with ever grayer boxes replacing the cards.
Pressing Home causes the display to freeze. Nothing else stops so the the time continues in timed games and sound effects still play, but with no visual feedback. Pressing End resumes the display. The Insert key can be used to toggle this on and off.
Like with debugging, there are two internal variables that control UTF-16 logging either to log.txt in the current directory (g_uiFileMask) or redirected standard output (g_uiConsoleMask). Also like debugging, they are not written to by the game so must be enabled manually.
A sample log:
SolLogGeneral: (673) SolitaireGame::FindHigherCardToPutOnStack() - Not a main stack, don't bother checking. CardLibLogGeneral: (674) CardStack::SetHighlight()::bHighlight == false CardLibLogGeneral: (675) Card::SetHighlight()::bHighlight == false 0x00002000: (676) Hide tip Rendering: (884) SetState: 260 Rendering: (885) (RenderManager.cpp:2156) Present Failed: 88760868(D3DERR_DEVICELOST) Rendering: (886) (RenderManager.cpp:1704) Resuming after lost device Rendering: (887) (Font.cpp:691) Invalidating a font cache Rendering: (888) (Font.cpp:691) Invalidating a font cache Rendering: (889) (RenderManager.cpp:2253) Reset: 800 x 496 format 22 Rendering: (890) (RenderManager.cpp:1465) RecreateDefaultResources() UI: (891) Recreating font: Segoe UI UI: (892) Recreating font: Segoe UI Rendering: (893) (RenderManager.cpp:150) CreateCachedBackBuffer() Rendering: (894) SetState: 4096 Core: (909) Engine_GotFocus() Timekeeping: (910) Reset timers Core: (911) Engine_LostFocus() Core: (912) Engine_GotFocus() Timekeeping: (913) Reset timers Rendering: (914) (RenderManager.cpp:2369) Saved the back buffer for cached presentation CardLibLogGeneral: (915) CardStack::SetEnabled()::bAccess == true Core: (916) Engine_LostFocus()
With logging and debug mode enabled, pressing F11 dumps the in use images and sounds to the log.
An interesting feature that isn't documented anywhere (Help Menu-wise) is XInput (gamepad) support in the Windows Vista and 7 versions of the game – if the game detects an Xbox 360 controller plugged into a USB port, the P1 corner on the controller will light up, signifying the controller can be used. Possibly undocumented because Microsoft thought people were too used to the traditional controls, and a gamepad wouldn't work for a card game. It's a neat little feature, nonetheless.
Find out if any of the other buttons (such as the "stick-click" buttons beneath the analog sticks or the guide button) do anything.
|Left analog stick/D-pad/Shoulder Buttons/Triggers||Moves the cursor. Oddly, they can also be used to navigate the menu bar.|
|B/Back||Undoes the previous move.|
|A/X||Selects the card the cursor is on. Moving the cursor onto another card and pressing A or X again moves the previous card onto the stack. Double-tapping either button moves a card to the home stack.|
|Y/Start||Opens the Game Menu.|