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