среда, декабря 23, 2009

Настройки разрешения игры Баланс

Настройки видео-разрешения игры Баланс (Ballance).
Итак, запустив в очередной раз эту игру "Баланс" у себя на ноутбуке под вистой (кстати, и под XP была та же ситуация) и в очередной раз разочаровавшись в том, что игра не может обнаружить разрешения больше 1152*864 (и это при моих 1440*900), решил поискать решение о том, как запустить игру нормально принудительно, так как постоянные смены разрешения раскидывают иконки на рабочем столе, раздражают глаза миганием и картинка в результате смазанная. Результатами поиска стала находка места  в реестре, отвечающего за разрешение. А именно, DWORD параметр "VideoMode", лежащий в реестре по адресу: "HKEY_LOCAL_MACHINE\SOFTWARE\Ballance\Settings".

Значение этого параметра 32-битное, где как я понимаю, младшие 14 бит - высота экрана, а следующие 14 бит - четырехкратная ширина экрана (вероятно, это связано с битностью цвета, т.к. 32 бита есть 4 байта, хотя я понятия не имею о причине этой закономерности). 2 старших бита, вроде как, не используются.

Итого, для разрешения в 1440*900 это значение в двоичном представлении будет "00AB", где:
(в скобках указывается система счисления: двоичная, десятичная или шестнадцатеричная,
все числа переводятся стандартным калькулятором Windows)


A = 1440 * 4 = 5760 (10) = 01011010000000 (2) (слева дописываются недостающие "0" до 14 знаков)
B = 900 * 1 = 900 (10) = 00001110000100 (2)

Итого, для 1440*900 в реестр заносится значение 000101101000000000001110000100 (2) = 94372740 (10) = 5A00384 (16)
Для справки - для максимально доступных у меня 1152*864 это будет 000100100000000000001101100000 (2) = 75498336 (10) = 4800360 (16)

И предупреждение: игра, скорее всего, будет зависать при попытке зайти в настройки разрешения, поэтому настройки вертикальной синхронизации и облаков желательно провести перед этой операцией заранее.

Также, хочу отметить, что при широкоэкранном разрешении игра все равно будет идти в формате 4:3, то есть оставит по краям черные полосы, но индикаторы жизней и очков будут  выравниваться правильно к углам, накладываясь на полосы.

Сомневаюсь, но надеюсь, что кому-то это окажется полезным.

PS. я также написал программу, делающую это автоматически. Если что, валяется тут.

© Vitik, то есть я