If you appreciate the work done within the wiki, please consider supporting The Cutting Room Floor on Patreon. Thanks for all your support!

Solitaire (Windows, 2007)

From The Cutting Room Floor
Jump to navigation Jump to search
This page contains changes which are not marked for translation.
Other languages:
English • ‎français • ‎polski • ‎日本語 • ‎한국어

Title Screen


Developers: Oberon Media, Microsoft
Publisher: Microsoft
Platform: Windows
Released internationally: January 30, 2007

CodeIcon.png This game has unused code.
DebugIcon.png This game has debugging material.

The 2007 version of Solitaire included with Windows Vista and 7 is a reworked version of the 1990 original with better graphics and some new features. Other than that, though, it plays exactly the same.

To do:
  • See if more of the options work in the Vista version. This was tested with the Windows 7 version.
  • There's much more to document. A good place to start would be to use Resource Hacker on the game executable and DLLs.
  • Add subpage for Media Center Solitaire, a full-screen version of the game embedded into the game's executable which, while technically used since it can be launched from Windows Media Center, is not documented in any Help menus and contains a whole bunch of unused content the normal game doesn't.
  • Multiple prototypes exist in various Windows Longhorn/Vista prototypes. Collect all of them and create a Prototype page.

Debug Mode

By setting the internal g_bDebugEnabled variable to a nonzero value, various debugging features 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 + 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

Solitaire-y confinement

Holding F6 causes 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 time continues in timed games and sound effects still play, but with no visual feedback. Pressing End resumes the display. Insert can be used to toggle this on and off.

Solver Debugging


A different debugging option can be enabled by launching the executable with the -solverdebug argument. This is also present in Spider Solitaire.


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


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.