Жизнь не стоит на месте, и времена, когда все радовались, пялясь в выпуклый моник-гробик с великим разрешением 1024х768, уже давно прошли. А времена с чёрно-зелёно-экранными ящичками даже я не застал.
Теперь все радуются жизни, утыкаясь в идеально плоские панельки, а на место квадратным разрешениям активно внедряются широкоформатные.
Очень мало человеков, которые смогли бы со стопудовой уверенностью глядеть в будущее и создавать вещи, которые бы смогли адаптироваться к постоянно меняющейся жизни. А разрабам игр это тем более не надо. Создают для конкретных случаев что-то одно, абсолютно не заморачиваясь на разнообразие современного железа.
Вот, потому и начинают появляться всякие кулибины, у которых данная игра либо глюкавит, либо вообще не пашет. И они, нагружаясь всевозможными тулзами, кидаются в бой, кто - до победного конца, когда игра пашет, кто - не очень...
Думал, что я уже не вернусь к Сайлент Хиллам в силу того, что нужные нюансы для меня были успешно все решены, но вот пиплы потихоньку достают меня по мылу, слёзно просят помочь. Блин, все обзавелись уже широкими мониками, один я - дурак всё пялюсь в квадратную семнашку.
Слёзные просильщики поделились на две категории.
Первая - когда просильщик хочет по-быстрому. Дай-грит мне готовый патч, что всё работало. Сам конечно разобраться не хочет.
Вторая - более продвинутая. Подскажи-грит как патчить, далее - он сам.
Так вот, из числа второй группы в очередной раз обратился ко мне товарищ с просьбой показать, как же менять разрешение в Хиллах 3-ем и 4-ом.
Выкроил себе кусок свободного времени, и так и быть - покажу.
Собственно к четвёртой части у меня уже есть заготовочка.
Как я уже писал ранее, в СХ4 всего несколько (считать лень) режимов:
- Код: Выделить всё
0 - 400х300
1 - 640х480
2 - 800х600
3 - 1024х768
4 - 1280х960
5 - 1600х1200
После раздебаживания их местоположение установлено и замену ненужных разрешений на нужные теперь можно делать самому.
Итак, учить как пользоваться хексоправками не буду - сами.
Остановлюсь лишь на определении двух форматов чисел.
Десятичному формату нас всех учит жизнь, а вот шестнадцатеричному - никак нет.
Для простоты скажу, что 16ричная отличается наличием букв в числах.
Вот как пишут в педиях: "Для перевода шестнадцатеричного числа в десятичное необходимо это число представить в виде суммы произведений степеней основания шестнадцатеричной системы счисления на соответствующие цифры в разрядах шестнадцатеричного числа." ВОТ!
Т.е. обзаводимся чистым листочком бумаги, ручкой и начинаем втыкать в теорию, вспоминать умножение столбиком, степени какие-то... ))
Для менее продвинутых - типа меня уже давно изобрели масдайский калькулятор, в котором перевод осуществяется автоматом. Тычем calc и там всё есть, если перевести вид в инженерный. Люблю навороты. )
Хексоправилку ака 16ричный редактор ищите и подбирайте себе сами, меня не просите.
Вот, например, как представлен текст написанный в блокноте и сохранённый в текстовый файл, но отображаемый в шестнадцатеричном виде:
Теперь стоит остановиться на представлении чисел в памяти.
Толи спецом, толи как, но как правило числа в памяти представлены в записи их наоборот!!
Его ещё называют интеловский формат или ещё литл-эндиан, т.е. младшими вперёд.
Абсолютно херово так данные читать в памяти. Постоянно голову приходится ломать, переворачивая на ходу числа. Порядок меняется байтами.
Так вот, перечисленные выше размеры в 16чном виде:
- Код: Выделить всё
0- 190h x 12Ch
1- 280h x 1E0h
2- 320h x 258h
3- 400h x 300h
4- 500h x 3C0h
5- 640h x 4B0h
В коде sh4 каждому числу отводится 4 байта (даблворд). И в памяти их представление будет несколько иным.
Также сразу привожу абсолютное смещение данных в экзешнике.
- Код: Выделить всё
0:
1499D 90010000
149A7 2C010000
1:
149B3 80020000
149BD E0010000
2:
149C9 20030000
149D3 58020000
3:
149DF 00040000
149E9 00030000
4:
149F5 00050000
149FF C0030000
5:
14A0B 40060000
14A15 B0040000
Ну, вот, собственно, осталось-то делов. Определиться, какое нужно разрешение для себя.
Например, надо сделать 1680x1050 из 640х480.
Переводим 1680 - 690h, переворачивам 90060000
Переводим 1050 - 41Ah, переворачивам 1A040000
Заходим в 16ричную правилку, открываем [Silent Hill 4.exe].
Переходим (Ctrl+G) по смещению 149B3 и пишем поверх 90060000
Переход по смещению означает передвинуть курсор для редактирования шестнадцатеричных данных на указанную величину, начиная с начала файла, т.к. смещение может быть абсолютным и относительным, то нам необходимо абсолютное смещение (на английском называется "go to offset, from the beginnig").
Переходим по смещению 149BD и пишем поверх 1A040000
Сохраняем изменения, запускаем игру и выбираем разрешение 640x480.
Если всё вышло, то разрешение будет поменято, если нет, то не судьба, надо рыть глубже...
Как изменить нужную строчку в файле перевода у меня описано в инструкции к моей утилитке [Ultimate SH-MES Recompilator]
Распаковываем там [message_common.bin], ищем например "640x480" меняем строчку хоть на "МОЁ" и пакуем взад.
Касаемо SH3.
В папке с игрой в папке [savedata] лежит файлец [disp.ini]
Если файл пуст или его нет, запустить [SH3Config.exe] в папке с игрой и нажать ОК.
В нём есть строчка, например:
size=1280x1024
Надо попробовать там выставить нужное разрешение. По идее должно выйти, но мне не на чем проверить, дерзайте!
Вот, пока и всё.
Всем удачи, WarMaker.