Solitaire (Microsoft, PC)

Solitaire is very likely the most played game in offices around the world.

Game Number
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.

Assertion Failure
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.

Unused Text
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.

Debug Version
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.
 * SolCardMenu.pngPrint icrdMacs displays some numbers, as seen at the right. They display the amount of cards in this order:
 * 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.

Debug Mode
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.

Menu
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.

Cheat Code
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.

Block Mode
Holding F6 causes the the playfield to be rendered in gray with ever grayer boxes replacing the cards.

Pause Mode
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.

Logging
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.

XInput Support
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.