Solitaire (Microsoft, PC)

From The Cutting Room Floor
Jump to: navigation, search

Developer: Microsoft
Publisher: Microsoft
Platform: PC
Released internationally: May 22, 1990

CodeIcon.png This game has unused code.
TextIcon.png This game has unused text.

To do:
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

Retail Version

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.


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.png
    Print 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.



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.


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.


To do:
Find out if any of the other buttons (such as the "stick-click" buttons beneath the analog sticks or the guide button) do anything.

Button Effect
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.