BallancePlayer is a modern, enhanced player for the game Ballance, developed by decompiling and improving the original version. It offers various new features and optimizations to deliver an improved gaming experience while maintaining compatibility with the original game.
- Portable and ready to use, no configuration needed to start the game
- Support for
.ini
file configurations - Command-line options for flexibility
- 32-bit color mode support
- Compatibility with monitors that don't support 640x480 resolution
- High refresh rate monitor support
- In-game resolution switching support
- Hotkeys for toggling fullscreen mode and closing the game
- No registry modifications
- No dependency on
Dsetup.dll
- Integrated
ResDll.dll
for seamless operation - Fixes for bugs present in the original player
- Various performance improvements
Supports the following Windows versions:
- Windows XP
- Windows Vista
- Windows 7
- Windows 8 / 8.1
- Windows 10
- Windows 11
- Extract the provided package into the
Bin
directory of your game folder. - Launch the game by running
Player.exe
. No need to set compatibility mode.
To build BallancePlayer, you’ll need the Virtools SDK, which can be obtained from Virtools-SDK-2.1. Set the VIRTOOLS_SDK_PATH
environment variable to the path where the SDK is installed before starting the build process.
- Install CMake: Ensure CMake is installed on your system.
- Navigate to Project Directory: Open a console and navigate to the directory containing the BallancePlayer source code.
- Generate Build Files: Run the following command to generate Visual Studio project files for 32-bit architecture:
cmake -B build -G "Visual Studio 16 2022" -A Win32
- Open in Visual Studio: Navigate to the
build
directory and open the solution fileBallancePlayer.sln
in Visual Studio. - Build the Solution: Use Visual Studio to compile the project.
- Install Visual Studio 6.0: Ensure Visual Studio 6.0 is installed.
- Open the Project: Locate
Player.dsw
in the project directory and open it with Visual Studio 6.0. - Build the Project: Use the build tools in Visual Studio 6.0 to compile the project.
The official release package is built with Visual Studio 6.0 for maximum compatibility with older systems.
- [Alt] + [Enter]: Switch between windowed and fullscreen mode.
- [Alt] + [F4]: Force close the game.
- [Alt] + [/]: Display an about box.
The Player.ini
file contains several settings that control the behavior of the game.
LogMode
: Controls how logs are handled.0
: Append to the log file.1
: Overwrite the log file.
Verbose
: Toggles verbose logging.0
: Disabled.1
: Enabled.
ManualSetup
: Controls whether the setup dialog appears on startup.0
: Disabled.1
: Enabled.
LoadAllManagers
: Controls whether all managers are loaded.0
: Disabled.1
: Enabled.
LoadAllBuildingBlocks
: Controls whether all building blocks are loaded.0
: Disabled.1
: Enabled.
LoadAllPlugins
: Controls whether all plugins are loaded.0
: Disabled.1
: Enabled.
Driver
: Specifies the driver ID of the graphics card to use.BitsPerPixel
: Specifies color depth.32
: 32-bit color.16
: 16-bit color.
Width
: Specifies screen width (based on your monitor resolution).Height
: Specifies screen height (based on your monitor resolution).FullScreen
: Controls display mode.0
: Windowed mode.1
: Fullscreen mode.
DisablePerspectiveCorrection
: Toggles perspective correction.0
: Off.1
: On.
ForceLinearFog
: Forces linear fog modes.0
: Off.1
: On.
ForceSoftware
: Disables hardware rendering.0
: Off.1
: On.
DisableFilter
: Disables texture filtering.0
: Off.1
: On.
EnsureVertexShader
: Ensures vertex shader support.0
: Off.1
: On.
UseIndexBuffers
: Enables index buffer usage.0
: Off.1
: On.
DisableDithering
: Disables dithering.0
: Off.1
: On.
Antialias
: Sets the level of anti-aliasing (minimum value: 2).DisableMipmap
: Disables mipmaps.0
: Off.1
: On.
DisableSpecular
: Disables specular highlights.0
: Off.1
: On.
EnableScreenDump
: Enables screen dumping functionality.0
: Off.1
: On.
EnableDebugMode
: Enables debug mode for step-by-step rendering.0
: Off.1
: On.
VertexCache
: Sets the size of the vertex cache. A value of0
disables sorting.TextureCacheManagement
: Enables or disables texture cache management.0
: Off.1
: On.
SortTransparentObjects
: Toggles sorting of transparent objects.0
: Off.1
: On.
TextureVideoFormat
: Specifies the default pixel format for textures (e.g.,_32_ARGB8888
).SpriteVideoFormat
: Specifies the default pixel format for sprites (e.g.,_32_ARGB8888
).
ChildWindowRendering
: Controls whether rendering occurs in a child window.0
: Disabled.1
: Enabled.
Borderless
: Controls window borders.0
: Disabled.1
: Enabled.
ClipCursor
: Controls whether the cursor is clipped to the window.0
: Disabled.1
: Enabled.
AlwaysHandleInput
: Allows the player to handle input even when the window is in the background.0
: Disabled.1
: Enabled.
PauseOnDeactivated
: Pauses the game when the window is deactivated.0
: Disabled.1
: Enabled.
X
: Specifies the horizontal window coordinate (can be negative).Y
: Specifies the vertical window coordinate (can be negative).
Language
: Sets the game language.0
: German.1
: English.2
: Spanish.3
: Italian.4
: French.
SkipOpening
: Controls whether to skip the opening animation.0
: Disabled.1
: Enabled.
ApplyHotfix
: Controls whether hotfixes are applied.0
: Disabled.1
: Enabled.
UnlockFramerate
: Unlocks the frame rate limitation.0
: Disabled.1
: Enabled.
UnlockWidescreen
: Unlocks non-4:3 resolutions.0
: Disabled.1
: Enabled.
UnlockHighResolution
: Unlocks resolutions higher than 1600x1200.0
: Disabled.1
: Enabled.
Debug
: Enables in-game debug mode.0
: Disabled.1
: Enabled.
Rookie
: Enables in-game rookie mode.0
: Disabled.1
: Enabled.
You can also use command-line options to customize game behavior:
Player.exe [OPTIONS]
--verbose
: Enable verbose logging.-m
,--manual-setup
: Always show the setup dialog box at startup.--load-all-managers
: Load all managers at startup.--load-all-building-blocks
: Load all building blocks at startup.--load-all-plugins
: Load all plugins at startup.-v <driver>
,--video-driver <driver>
: Set the graphics card driver ID.-b <bpp>
,--bpp <bpp>
: Set the bits per pixel (32 or 16).-w <width>
,--width <width>
: Set the screen width.-h <height>
,--height <height>
: Set the screen height.-f
,--fullscreen
: Start the game in fullscreen mode.--disable--perspective-correction
: Disable perspective correction.--force-linear-fog
: Force the fog mode to linear.--force-software
: Disable hardware rendering and force software mode.--disable-filter
: Disable texture filtering.--ensure-vertex-shader
: Ensure vertex shader support.--use-index-buffers
: Enable index buffer usage.--disable-dithering
: Disable image dithering.--antialias <level>
: Enable image antialiasing (minimum: 2).--disable-mipmap
: Disable mipmaps.--disable-specular
: Disable specular highlights.--enable-screen-dump
: Dump screen content using (CTRL + ALT + F10).--enable-debug-mode
: Enable debug mode using (CTRL + ALT + F11).--vertex-cache <size>
: Set the vertex cache size (0 disables sorting).--disable-texture-cache-management
: Disable texture cache management.--disable-sort-transparent-objects
: Disable sorting of transparent objects.--texture-video-format <pixel-format>
: Set the texture pixel format (e.g.,_32_ARGB8888
).--sprite-video-format <pixel-format>
: Set the sprite pixel format (e.g.,_32_ARGB8888
).-s
,--child-window-rendering
:Enable child window rendering.-c
,--borderless
: Start the game in borderless mode.--clip-cursor
: Clip the cursor to the window.--always-handle-input
: Allow input handling when the window is in the background.-p
,--pause-on-deactivated
: Pause the game when the window is deactivated.-x <X>
,--position-x <X>
: Set the window's X coordinate.-y <Y>
,--position-y <Y>
: Set the window's Y coordinate.-l <lang>
,--lang <lang>
: Set the game language.--skip-opening
: Skip the opening animation.--disable-hotfix
: Disable script hotfixes.-u
,--unlock-framerate
: Unlock the frame rate limitation.--unlock-widescreen
: Unlock non-4:3 resolutions.--unlock-high-resolution
: Unlock resolutions higher than 1600x1200.d
,--debug
: Enable in-game debug mode.r
,--rookie
: Enable in-game rookie mode.
If you have any bugs or requests, please open an issue in this repository: BallancePlayer.
New Features
- Added the
LogMode
setting to control log mode. - Added the
Verbose
setting with the--verbose
option to control debug log output. - Introduced the
ApplyHotfix
setting with the--no-hotfix
option to control whether script hotfixes are applied. - Added the
ClipCursor
setting with the--clip-cursor
option to manage cursor clipping behavior. - Added more graphics settings and options.
- Improved error messaging for better clarity.
Changes
- Logs now overwrite the existing file instead of appending to it.
- Reorganized configuration categories for better structure.
- Where possible, relative paths are now used.
Bug Fixes
- Fixed an issue with broken plugin registration.
Changes
- The application window now opens in the center of the screen by default.
Bug Fixes
- Fixed a potential issue with abnormal resolution settings.
New Features
- Added the
ChildWindowRendering
setting with the--child-window-rendering
option to control rendering in a child window.
Bug Fixes
- Resolved a possible black screen issue when switching to full-screen mode.
Changes
- By default, rendering is no longer done in a separate window.
Bug Fixes
- Fixed a game initialization failure that occurred when no screen mode was selected in the setup dialog.
- Corrected the render driver initialization process.
New Features
- Added support for running multiple instances of the game.
Bug Fixes
- Fixed a crash that occurred when exiting the game.
Changes
- Deprecated the
Resizable
andClipMouse
settings. - Enhanced error messages for better clarity.
- Refactored the codebase to simplify the implementation.
New Features
- Added the
ManualSetup
setting and corresponding--manual-setup
command-line option to control whether the setup dialog box is shown at startup.
Bug Fixes
- Fixed issues with short option parsing in the command line.
Changes
- Deprecated the
AdaptiveCamera
setting. - Deprecated delay-loaded DLL.
- Deprecated path customization.
- Simplified the workaround for driver and screen mode enumeration.
New Features
- Added support for console logging.
- Added the
LoadAllManagers
setting with the--load-all-managers
command-line option to control whether all managers are loaded. - Added the
LoadAllBuildingBlocks
setting with the--load-all-building-blocks
option to control whether all building blocks are loaded. - Added the
LoadAllPlugins
setting with the--load-all-plugins
command-line option to control whether all plugins are loaded.
Bug Fixes
- Fixed an issue where the screen modes will be changed incorrectly.
- Resolved a startup failure caused by incorrect path settings.
Changes
- Removed the dependency on the modified version of
TT_InterfaceManager_RT.dll
.
New Features
- Added a Chinese version of the README.
Bug Fixes
- Fixed a potential crash issue that occurred upon exiting the game.
Changes
- Improved the game loop for better performance.
Bug Fixes
- Fixed an issue preventing the player from switching between fullscreen and windowed mode when using OpenGL.
- Resolved problems with task switching that could lead to errors.
Bug Fixes
- Fixed a UI crash that occurred during task switching in fullscreen mode.
- Resolved an issue where specifying a display driver had no effect.
Changes
- Swapped the positions of
Driver
andScreen Mode
in theFullScreen Setup
dialog.
Bug Fixes
- Fixed a pop-up black screen issue after exiting.
Bug Fixes
- Fixed forced fullscreen Vsync.
- Fixed the issue that window position can not be restored correctly.
Bug Fixes
- Resolved a black screen error on monitors that do not support 640x480 resolution.
New Features
- Added support for in-game debug mode.
- Introduced new command-line options like
--root-path=<dir>
.
New Features
- Added support for more resolutions, skipping the opening animation, mouse clipping, off-site startup, game path customization, and Virtools console output.
- Introduced many new settings and corresponding command-line options.
Bug Fixes
- Fixed issues with fullscreen setup.
- Resolved an issue where the player would get stuck when using custom resolutions.
Changes
- Unified log and error output.
- Rearranged settings and corresponding command-line options.
Bug Fixes
- Fixed an issue with the position-saving mechanism when exiting fullscreen mode.
Changes
- If the window is resizable (with a title), it now appears in the upper-left corner with a slim margin from the screen edge when the window position is set to 0.
- The saved window position value can now be negative.
- The game will now save the last used game mode (fullscreen or windowed) and restore it the next time it starts up.
Bug Fixes
- Fixed an issue where the game was locked at 60 FPS on 144Hz monitors when v-sync was enabled.
- Resolved a bug preventing the game from finding multiple display drivers.
New Features
- Added
X
andY
settings with corresponding-x
and-y
options to set the screen coordinates of the upper-left corner of the window.
Bug Fixes
- Fixed an issue where the game window resized unnaturally before starting.
Changes
- The last window position is now saved and restored on the next startup.
New Features
- Added the
Borderless
setting with the-c
option to start in borderless mode. - Added the
Resizable
setting with the-s
option to make the window resizable.
Changes
- The window is now non-resizable by default.
New Features
- Added support for 32-bit color mode.
- Added support for command-line long options.
- Added the
Language
setting with the-l
option to set the game language. - Added the
UnlockFramerate
setting with the-u
option to unlock the frame-rate limit.
Bug Fixes
- Fixed a UI disorder bug during task switching.
Changes
- Changed the command-line option for disabling task switching from
-d
to-e
. - Reimplemented the initialization configuration mechanism.
- Rewrote command-line support.
- Integrated the functions of
ResDll
.
New Features
- Added the
PauseOnTaskSwitch
setting with the-p
option to enable game pause during task switching.
Bug Fixes
- Fixed bugs where the game would exit early and crash upon exit.
Changes
- Removed unnecessary virtual functions to improve performance.
- Removed the unused Interface Sprite.
- Improved error handling.
New Features
- Added support for command-line options.
Bug Fixes
- Fixed fullscreen crash.
- Fixed task switching issues.
- Fixed resolution duplicates in Graphics Options.
Changes
- Removed dependency on
Dsetup.dll
since checking DirectX is unnecessary on modern PCs. - Removed exception handling to improve performance.
Bug Fixes
- Fixed an issue where the game might crash upon exit.
Changes
- Default config files are now generated when no configuration file is found.
- Replaced remaining registry operations in the main function.
- Removed
FixedString
.
New Features
- Added support for initialization file configuration.
Bug Fixes
- Fixed an issue where the game displayed incompletely in windowed mode.
Changes
- Removed some unknown class members.
Bug Fixes
- Fixed a memory checking bug that caused incorrect results.