Сейчас на форуме: asfa, Rio, _MBK_, Adler (+8 невидимых)

 eXeL@B —› Вопросы новичков —› Как научить видеть игру широкоформатные мониторы?
<< . 1 . 2 . 3 . >>
Посл.ответ Сообщение


Ранг: 111.0 (ветеран), 2thx
Активность: 0.090
Статус: Участник

Создано: 23 декабря 2012 19:07
· Личное сообщение · #1

Здравствуйте. Нашёл CD древней игрушки, но после установки, заметил, что разработчики ограничились только самыми распространёнными разрешениями экрана. Возможно ли сделать каким-либо образом поддержку 1366х768, 1920х1080? Прикладываю файлы кинфигуратора разрешения.

пароль: exelab

4272_23.12.2012_EXELAB.rU.tgz - p3.rar

-----
Ламер - не профессия :))





Ранг: 111.0 (ветеран), 2thx
Активность: 0.090
Статус: Участник

Создано: 19 января 2013 22:15 · Поправил: aspirin
· Личное сообщение · #2

Получил лог с адресами, подскажите пожалуйста, что делать дальше?


1bb5_21.01.2013_EXELAB.rU.tgz - PATRICIAN3.EXE.log.txt

-----
Ламер - не профессия :))





Ранг: 111.0 (ветеран), 2thx
Активность: 0.090
Статус: Участник

Создано: 22 января 2013 18:32 · Поправил: aspirin
· Личное сообщение · #3

В исходниках Plugin.cpp я нашёл следующую запись:

Code:
  1. DWORD bef_IDirectDraw_SetDisplayMode(DWORD retaddr, DWORD *params, PVOID pF){
  2.          params[1]=1280;
  3.          params[2]=1024;
  4.          return 0;

В логе вызовов немного другой вариант:

05025208 IDirectDraw2_SetDisplayMode(002DB528, 00000320, 00000258, 00000010, 00000000, 00000000)

Можно ли добавить этот метод в исходник, не изменяя остальной код, или надо к IDirectDraw в листинге 2
добавить везде, как правильнее и лучше?

add: циферку 2 добавил в исходнике всего в 2 местах.
Code:
  1. params[1]=1280; заменил на params[1]=1366;
  2. params[2]=1024; params[2]=768;


Игра теперь не видит сейвов, и картинка не растянулась, а на фоне чёрного экрана уехала в левый верхний угол, какие предложения есть?

add2: Добавил как новый метод IDirectDraw2_SetDisplayMode, выставил 1366х768, и теперь игра падает с ошибкой: SetDisplayMode failed

Знатоки, ну где же вы??

-----
Ламер - не профессия :))





Ранг: 337.6 (мудрец), 224thx
Активность: 0.210.1
Статус: Участник
born to be evil

Создано: 22 января 2013 19:04
· Личное сообщение · #4

aspirin пишет:
Игра теперь не видит сейвов, и картинка не растянулась, а на фоне чёрного экрана уехала в левый верхний угол

видимо, ошибся в цифирях таки. не верится, что прога заточена под 1280

PS: нам бы всем ваши проблемы

-----
От многой мудрости много скорби, и умножающий знание умножает печаль





Ранг: 111.0 (ветеран), 2thx
Активность: 0.090
Статус: Участник

Создано: 22 января 2013 19:22
· Личное сообщение · #5

ajax
в .cpp исходнике много где используется 1280, где надо править? Хотелось бы красиво поправить, а не Copy-Pust по всему листингу...

-----
Ламер - не профессия :))





Ранг: 337.6 (мудрец), 224thx
Активность: 0.210.1
Статус: Участник
born to be evil

Создано: 22 января 2013 19:27
· Личное сообщение · #6

aspirin
я не смотрел листинг. если много 1280 - руки оторвать программеру, д.б. константа в хидере. но, если таки так - только руками

-----
От многой мудрости много скорби, и умножающий знание умножает печаль





Ранг: 111.0 (ветеран), 2thx
Активность: 0.090
Статус: Участник

Создано: 22 января 2013 19:40 · Поправил: aspirin
· Личное сообщение · #7

ajax
как-то странно написан вообще код, перебил везде 1280 на 1366 - вообще не запускается сразу...ну что ж это такое...На предыдущей странице есть ссылка на этот плагин с исходником, можете посмотреть, что там к чему?

Циферки все перебил, но изображение по-прежнему не растягивается, только уходит в левый лерхний угол, прикладываю исходник с изменениями.

db0a_22.01.2013_EXELAB.rU.tgz - plugin.cpp

-----
Ламер - не профессия :))





Ранг: 681.5 (! !), 405thx
Активность: 0.420.21
Статус: Участник
ALIEN Hack Team

Создано: 23 января 2013 17:08 · Поправил: ARCHANGEL
· Личное сообщение · #8

Интересн чисто алгоритмический момент. У нас есть монитор, любой. На нём рисуется двумерное изображение, которое является набором точек. Т.е. эта своеобразная матрица. Давайте представим, что у нас есть некая матрица, в которой 3 строки и 5 столбцов:
______________
|__|__|__|__|__|
|__|__|__|__|__|
|__|__|__|__|__|

В С/С++ для обращения к двумерным массивам по указателю используется такой синтаксис:

buff[i][j], где i - номер строки, j - номер столбца. Если использовать для адресации значений декартову систему координат, то можно сказать, что к массивам надо обращаться по координатам [Y][X]. В мониторах всё наоборот: 1366х768 означает, что в одной строке у меня поместится 1366 точек, а строк всего 768, т.е. 768 строк на 1366 столбцов. Ок, с этим разобрались. Если нет никаких возражений - едем дальше.

Для отображения игры на широкоформатном мониторе нам нужно смасштабировать картинку. Т.е. увеличить либо уменьшить исходное изображение. Для нас интересна операция увеличения, т.к. 640х480 точек мы практически в любой игре можем наблюдать, а мониторы современные (или не очень) в состоянии давать бОльшую картинку (с большей детализацией).

Давайте вернёмся к матрице 3 х 5. Всего в ней 3*5=15 элементов (точек). И если мы хотим выполнить увеличение, скажем, в два раза, мы должны каждый элемент заменить матрицей 2х2. Все элементы такой матрицы будут содержать значение нашей точки (увеличиваемого элемента). И тут - самое интересное. А что, если в результате я хочу получить матрицу 7 х 13?

Давайте перед этим попробуем обощить алгоритм масштабирования. Изначально в нашей исходной матрице каждый элемент мы представляем некоей вырожденной матрицей, т.е. это такие матрицы, в которых 1 строка и 1 столбец. Чтоб увеличить количество столбцов, мы во все эти вырожденные матрицы заменяем на вектора с длиной равной 2. Ведь возможно увеличение лишь по одной из размерностей - по длине или по ширине. Но мы же не можем сдлеать вектор, длину которого будет, скажем, 1.5 или 1.75. Как мы тогда обратимся к такой ячейке видеопамяти? Т.е. увеличивать по нашему алгоритмы можно только в какое-то целое количество раз. Чтоб узнать, как нам нужно увеличивать матрицу, сделаем так: кол-во строк большей делим на кол-во строк меньшей, и также - со столбцами. 7/3= 2.333, 13/5=2.6. На такие значчения мы вырожденную матрицу не расширим. Значит нужен другой алгоритм. Интересно, какой?

aspirin
1366/640=2.134375 - может, стоит поискать другой плагин?

З.Ы.
Немного поиска в гугле дали --> Ссыль на алго <--. Есть реализация на С. Будем думать...

-----
Stuck to the plan, always think that we would stand up, never ran.





Ранг: 111.0 (ветеран), 2thx
Активность: 0.090
Статус: Участник

Создано: 23 января 2013 17:22
· Личное сообщение · #9

ARCHANGEL
ваши рассуждения занимательны, но вывод следует из них один, в случае с моей игрой, этот метод работать не будет, и данный исходник бесполезен?
Я ведь имею адреса:
05025208 IDirectDraw2_SetDisplayMode(002DB528, 00000320, 00000258, 00000010, 00000000, 00000000)
Нельзя ли в самом .ехе жёстко забить нужное разрешение? Это как временный метод? А впоследствии под игру написать нормальную утилиту?

-----
Ламер - не профессия :))




Ранг: 301.4 (мудрец), 194thx
Активность: 0.170.01
Статус: Участник

Создано: 23 января 2013 17:26 · Поправил: Veliant
· Личное сообщение · #10

aspirin пишет:
Нельзя ли в самом .ехе жёстко забить нужное разрешение? Это как временный метод? А впоследствии под игру написать нормальную утилиту?

Собственно я своей DLL так и делал. Но есть одна проблемка - в главном меню все картинки фиксированных размеров и они по умолчанию не тянутся и не деформируются. В самой же игре какое укажешь разрешение, такое и будет, и игра худо-бедно пересчитывает под новые размеры. Надо просто во всех местах 3 фиксированных разрешения (800х600, 1024х768, 1280х1024) перебить на свои, чего я не сделал, поэтому были артефакты.

Вариант с растяжением уже готовой картинки не пойдет т.к. будет мыло. Разве что выводить окно посередине экрана с черными полями




Ранг: 681.5 (! !), 405thx
Активность: 0.420.21
Статус: Участник
ALIEN Hack Team

Создано: 23 января 2013 17:31
· Личное сообщение · #11

Veliant

А, как вы считаете, стоит ли пробовать такой подход. Берём разрешение 1280х1024, и интерполируем его до 1366х768 (уменьшаем). Сохранится ли чёткость или поплывёт?

-----
Stuck to the plan, always think that we would stand up, never ran.




Ранг: 301.4 (мудрец), 194thx
Активность: 0.170.01
Статус: Участник

Создано: 23 января 2013 17:35 · Поправил: Veliant
· Личное сообщение · #12

ARCHANGEL пишет:
А, как вы считаете, стоит ли пробовать такой подход. Берём разрешение 1280х1024, и интерполируем его до 1366х768 (уменьшаем). Сохранится ли чёткость или поплывёт?

Не пропорционально же выйдет. До 960х768 можно попробовать с двумя полосами по бокам. С таким же успехом лучше выводить 1024х768

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




Ранг: 111.0 (ветеран), 2thx
Активность: 0.090
Статус: Участник

Создано: 23 января 2013 17:44 · Поправил: aspirin
· Личное сообщение · #13

Veliant пишет:
Надо просто во всех местах 3 фиксированных разрешения (800х600, 1024х768, 1280х1024) перебить на свои, чего я не сделал, поэтому были артефакты.

Вы могли бы сделать вместо 800х600=1366х768, 1024х768=1920х1080? В виде .dll + .exe. Это временно мне потестировать, и посмотреть, где будут дефекты?

add: в plugin.cpp, где я заменил все встречающиеся 1280 и 1024 на свои соответствующие, и скомпилировал библиотеку, сама картинка при запуске действительно не растягивается, только справа экран заполняется чёрным цветом. Но вот при начале новой игры, картинка растянулась почти полностью! Слева пропала полоса, а справа я вижу кусок рабочего стола. При разрешении в меню 1024х768, левая сторона также с низом впорядке, правая часть ещё сужается. При 1280х1024 картинка не опускается вниз, видимо, я перебивая параметры, напартачил, или нет? Какие идеи теперь?

"И все же я считаю нужно мучать сам игровой движок, чтоб он отрисовывал в нужном нам разрешении, тк это более универсально получится" - также жёстко в него вбивать разрешения, или править алгоритм расчёта, что именно вы имеете ввиду?

-----
Ламер - не профессия :))





Ранг: 324.3 (мудрец), 221thx
Активность: 0.480.37
Статус: Участник

Создано: 23 января 2013 20:20 · Поправил: DenCoder
· Личное сообщение · #14

aspirin пишет:
Игра теперь не видит сейвов, и картинка не растянулась, а на фоне чёрного экрана уехала в левый верхний угол, какие предложения есть?

Ну не зря я выложил немного больший код, чем бы Вам хотелось. Одного SetDisplayMode мало! Создаёт ли плагин промежуточную поверхность?

aspirin пишет:
add: циферку 2 добавил в исходнике всего в 2 местах.

aspirin пишет:
Добавил как новый метод IDirectDraw2_SetDisplayMode, выставил 1366х768, и теперь игра падает с ошибкой: SetDisplayMode f

В DirectDraw2 и подних версиях нужно либо корректно установить частоту для , либо 0 - система определит. BitsPerPixel - либо 32, либо 24. То есть в DirectDraw(1) меньше параметров, из-за этого и крах.

ARCHANGEL пишет:
Сохранится ли чёткость или поплывёт?

И при уменьшении и при увеличении плывёт. Достаточно 12.5%(что я пробовал) в ту или другую сторону - маленький шрифт ещё опознаётся, но хорошо смыт, 25% - уже с трудом можно прочитать текст маленьким шрифтом.

-----
IZ.RU





Ранг: 111.0 (ветеран), 2thx
Активность: 0.090
Статус: Участник

Создано: 23 января 2013 21:03
· Личное сообщение · #15

DenCoder пишет:
Ну не зря я выложил немного больший код, чем бы Вам хотелось. Одного SetDisplayMode мало!

Мне пока что непонятно, как использовать Ваш код, если это просто кусок, который можно вставить в файл .cpp и скомпилировать, тогда да, тут всё ясно. А если к этому надо создать ещё хэдеры, то для меня это сложно.
DenCoder пишет:
В DirectDraw2 и подних версиях нужно либо корректно установить частоту для , либо 0 - система определит. BitsPerPixel - либо 32, либо 24. То есть в DirectDraw(1) меньше параметров, из-за этого и крах.

Это понятно только тем, кто имеет опыт работы с графикой.
DenCoder пишет:
И при уменьшении и при увеличении плывёт. Достаточно 12.5%(что я пробовал) в ту или другую сторону - маленький шрифт ещё опознаётся, но хорошо смыт, 25% - уже с трудом можно прочитать текст маленьким шрифтом.

В моём случае, половина шрифтов будет нечитабельна? (Там много мелких букв)

-----
Ламер - не профессия :))





Ранг: 324.3 (мудрец), 221thx
Активность: 0.480.37
Статус: Участник

Создано: 23 января 2013 21:56
· Личное сообщение · #16

aspirin пишет:
если это просто кусок, который можно вставить в файл .cpp и скомпилировать, тогда да, тут всё ясно.

Нет! Предполагается определённая подготовка общая и конкретно по той причине, что кусок выдран из моего кода и подправлен на коленке с учётом специфики.

aspirin пишет:
В моём случае, половина шрифтов будет нечитабельна? (Там много мелких букв)

Да! Чтобы этого не было, требуется основательно покопаться в коде игры или какая-то магия с большим запасом маны )))

ARCHANGEL пишет:
Давайте перед этим попробуем обощить алгоритм масштабирования...

На практике эта теория как-то может используется непосредственно в дровах видеокарт. Но DirectX - всего лишь добавка к gdi! И там преобразования проще

-----
IZ.RU





Ранг: 111.0 (ветеран), 2thx
Активность: 0.090
Статус: Участник

Создано: 01 февраля 2013 20:50 · Поправил: aspirin
· Личное сообщение · #17

Veliant пишет:
Надо просто во всех местах 3 фиксированных разрешения (800х600, 1024х768, 1280х1024) перебить на свои, чего я не сделал, поэтому были артефакты.

Вы можете мне подсказать хотя бы адреса, где надо перебить значения? (Примером, как сделать)
Или изменения зашиты в dll?

-----
Ламер - не профессия :))




Ранг: 301.4 (мудрец), 194thx
Активность: 0.170.01
Статус: Участник

Создано: 01 февраля 2013 21:12 · Поправил: Veliant
· Личное сообщение · #18

Честно говоря я уже снес игру давно, думал вопрос отпал Качаю заново, буду смотреть




Ранг: 111.0 (ветеран), 2thx
Активность: 0.090
Статус: Участник

Создано: 01 февраля 2013 21:34
· Личное сообщение · #19

Veliant пишет:
Честно говоря я уже снес игру давно, думал вопрос отпал

Ну вы даёте Я с исходником уже который день сижу, мучаюсь, а вы думали, что уже не надо .
Если будете продолжать идти в сторону отдельной dll, если не трудно, хоть немного в личку расскажите, как вы цепляете .ехе к dll, хотелось бы увидеть исходник, чтобы потом в последствии самому его можно было бы доработать.

-----
Ламер - не профессия :))




Ранг: 301.4 (мудрец), 194thx
Активность: 0.170.01
Статус: Участник

Создано: 03 февраля 2013 18:14 · Поправил: Veliant
· Личное сообщение · #20

1366x768
http://savepic.org/2731866.jpg




Ранг: 111.0 (ветеран), 2thx
Активность: 0.090
Статус: Участник

Создано: 03 февраля 2013 18:24
· Личное сообщение · #21

Veliant пишет:
1366x768
http://savepic.org/2731866.jpg

Процедура адаптации игры сложна? К примеру, если будет нужно сделать под 1920х1080, или под 27 дюймовый экран?

-----
Ламер - не профессия :))




Ранг: 301.4 (мудрец), 194thx
Активность: 0.170.01
Статус: Участник

Создано: 03 февраля 2013 18:31
· Личное сообщение · #22

Пока что только нашел способ растягивания по горизонтали, путем пропатчивания ехе и правки ресурсных ini файлов. Размер игровой области и положение правого сайдбара берется из координат текстур.
По вертикали будет сложней. Точней игровая область будет нормально отображаться, а вот панели могут быть не отрисованы. Если только дописывать код.
Да и меню пока что в 800*600 рисуется, независимо от установленного. С этим думаю можно решить проблему путем дописывания кода, который будет растягивать фоновое изображение.




Ранг: 111.0 (ветеран), 2thx
Активность: 0.090
Статус: Участник

Создано: 23 февраля 2013 17:44 · Поправил: aspirin
· Личное сообщение · #23

Итак, методом Veliant удачно растягивается горизонталь в игре. На этом проблемы исчерпываются, если ваше родное разрешение 1366х768. Я решил сделать ещё поддержку 1920х1080. Все разрешения забиты в коде самого .ехе. В итоге, поискав константу 500h=1280, я вижу в ольке следующий список адресов:



В данном списке отстутствуют уже запатченные мною адреса.
На данный момент игра запускается, но тут же падает, код следующий:



Кто мог бы мне объяснить, почему падает, и как это поправить?

CPU Disasm
Address Hex dump Command Comments
0042270B |. C74424 1C 000 MOV DWORD PTR SS:[LOCAL.0],0
00422713 |. 8BCD MOV ECX,EBP
00422715 |. E8 D6A90800 CALL 004AD0F0 ; [Patrician3_unp_res9.004AD0F0
0042271A |. 8DBE 3C020000 LEA EDI,[ESI+23C]
00422720 |. C64424 1C 01 MOV BYTE PTR SS:[LOCAL.0],1
00422725 |. 8BCF MOV ECX,EDI
00422727 |. E8 F4240400 CALL 00464C20 ; [Patrician3_unp_res9.00464C20
0042272C |. 8D9E 30030000 LEA EBX,[ESI+330]
00422732 |. C64424 1C 02 MOV BYTE PTR SS:[LOCAL.0],2
00422737 |. 8BCB MOV ECX,EBX
00422739 |. E8 E2240400 CALL 00464C20 ; [Patrician3_unp_res9.00464C20
0042273E |. 8D8E 24040000 LEA ECX,[ESI+424]
00422744 |. C64424 1C 03 MOV BYTE PTR SS:[LOCAL.0],3
00422749 |. E8 A2A90800 CALL 004AD0F0 ; [Patrician3_unp_res9.004AD0F0
0042274E |. 8D8E 00050000 LEA ECX,[ESI+500] - надо ли патчить тут? 500 заменить на 780=1920
00422754 |. C64424 1C 04 MOV BYTE PTR SS:[LOCAL.0],4
00422759 |. E8 32750A00 CALL 004C9C90 ; [Patrician3_unp_res9.004C9C90
0042275E |. 8D8E 80060000 LEA ECX,[ESI+680]
00422764 |. C64424 1C 05 MOV BYTE PTR SS:[LOCAL.0],5
00422769 |. E8 92DF0800 CALL 004B0700 ; [Patrician3_unp_res9.004B0700

Ссылка на патченный ехе:
http://files.mail.ru/63F981D3C03C4A4AB5574BED7D5D443F

-----
Ламер - не профессия :))





Ранг: 111.0 (ветеран), 2thx
Активность: 0.090
Статус: Участник

Создано: 01 марта 2013 19:59
· Личное сообщение · #24

Если просто переправить jl на jmp, то приложение перестаёт падать, но пропадают текстуры, кто может помочь??

-----
Ламер - не профессия :))





Ранг: 111.0 (ветеран), 2thx
Активность: 0.090
Статус: Участник

Создано: 31 марта 2013 14:48 · Поправил: aspirin
· Личное сообщение · #25

Код самих разрешений в .ехе выглядит следующим образом:

Code:
  1. 00423C94  |.  C74424 4C 200 MOV DWORD PTR SS:[ESP+4C],320
  2. 00423C9C  |.  C74424 50 580 MOV DWORD PTR SS:[ESP+50],258
  3. 00423CA4  |.  EB 2A         JMP SHORT 00423CD0
  4. 00423CA6  |>  3C 01         CMP AL,1
  5. 00423CA8  |.  75 12         JNE SHORT 00423CBC
  6. 00423CAA  |.  C74424 4C 560 MOV DWORD PTR SS:[ESP+4C],556
  7. 00423CB2  |.  C74424 50 000 MOV DWORD PTR SS:[ESP+50],300
  8. 00423CBA  |.  EB 14         JMP SHORT 00423CD0
  9. 00423CBC  |>  3C 02         CMP AL,2
  10. 00423CBE  |.  75 10         JNE SHORT 00423CD0
  11. 00423CC0  |.  C744E4 4C 400 MOV DWORD PTR SS:[ESP+4C],640
  12. 00423CC8  |.  C744E4 50 000 MOV DWORD PTR SS:[ESP+50],400


Сейчас .ехе запатчен мной на разрешение 1600х1024. Получается, что если мы правим координаты горизонтали, то у движка никаких претензий к нам нет, и всё нормально работает. Но если 640х400 заменить на 780х438, игра запустится, но при сохранении, к примеру, произойдёт вылет. Также сохранённые сейвы при патченной вертикали не работают. Кто может мне помочь?

-----
Ламер - не профессия :))




Ранг: 301.4 (мудрец), 194thx
Активность: 0.170.01
Статус: Участник

Создано: 31 марта 2013 19:42
· Личное сообщение · #26

значит под каждое разрешение еще где-то жестко прописывается размер какого-то буфера. Либо запатчили в лишнем месте не ту константу




Ранг: 111.0 (ветеран), 2thx
Активность: 0.090
Статус: Участник

Создано: 31 марта 2013 20:26 · Поправил: aspirin
· Личное сообщение · #27

Veliant, патчил исключительно по вашим адресам:

00023CAE: 0004 5605
00029BD1: 0004 5605
0002A0F6: 0004 5605
0002D295: 0004 5605
00032EFC: 0004 5605
00060016: 0004 5605
000640AA: 0004 5605
00145E55: 0004 5605
00145E8F: 0004 5605
00145ED7: 0004 5605
00145FB5: 0004 5605

Только последние снизу 2-3 адреса касаются разрешения: 1024х768, эти вообще не трогал. В других местах находил константы, но ничего не трогал.

Veliant пишет:
значит под каждое разрешение еще где-то жестко прописывается размер какого-то буфера

Но тогда бы и патченная горизонталь не должна работать, раз они фиксированы. Проблема остаётся только в вертикали!
Veliant, глядя на скрин в модуле ddraw вы понимаете, почему произошёл вылет? Если пройти по адресам, из которых в EAX, EDX записываются Dword,ы, то там увидим мусор (или совсем мне непонятный код).
Вам прислать сюда патченный .ехе под 1920х1080?

-----
Ламер - не профессия :))





Ранг: 111.0 (ветеран), 2thx
Активность: 0.090
Статус: Участник

Создано: 01 апреля 2013 20:30
· Личное сообщение · #28

Потестировал игру на 1600х1024, всё те же вылеты с отчётами. То при сохранении, то даже при загрузке сейва.

Вот код, который я вижу, если перейти по адресам:

Code:
  1. 0508DFEF    A1 68D00805     MOV EAX,DWORD PTR DS:[508D068]
  2. 0508DFF4    33ED            XOR EBP,EBP
  3. 0508DFF6    A3 9ED00805     MOV DWORD PTR DS:[508D09E],EAX
  4. 0508DFFB    8B15 34D00805   MOV EDX,DWORD PTR DS:[508D034]
  5. 0508E001    832D 9ED00805 0 SUB DWORD PTR DS:[508D09E],4


то увидим:

Code:
  1. 0508D068    1C 01           SBB AL,1
  2. 0508D06A    0000            ADD BYTE PTR DS:[EAX],AL
  3. 0508D06C    D4 01           AAM 1
  4. 0508D06E    0000            ADD BYTE PTR DS:[EAX],AL
  5. 0508D070    E7 07           OUT 7,EAX                                ; I/O command
  6. 0508D072    0000            ADD BYTE PTR DS:[EAX],AL
  7. 0508D074    1A02            SBB AL,BYTE PTR DS:[EDX]
  8. 0508D076    0000            ADD BYTE PTR DS:[EAX],AL
  9. 0508D078    F8              CLC
  10. 0508D079    07              POP ES                                   ; Modification of segment register
  11. 0508D07A    0000            ADD BYTE PTR DS:[EAX],AL
  12. 0508D07C    F2:07           REPNE POP ES                             ; Superfluous REPxx prefix
  13. 0508D07E    0000            ADD BYTE PTR DS:[EAX],AL
  14. 0508D080    FF              DB FF                                    ; Unknown command
  15. 0508D081    FF              DB FF                                    ; Unknown command
  16. 0508D082    FF              DB FF                                    ; Unknown command


Что означает это мусор??

Code:
  1. 0508D09E   /78 00           JS SHORT 0508D0A0
  2. 0508D0A0   \0000            ADD BYTE PTR DS:[EAX],AL
  3. 0508D0A2    04 00           ADD AL,0
  4. 0508D0A4    0000            ADD BYTE PTR DS:[EAX],AL
  5. 0508D0A6    0000            ADD BYTE PTR DS:[EAX],AL
  6. 0508D0A8    0000            ADD BYTE PTR DS:[EAX],AL
  7. 0508D0AA    0000            ADD BYTE PTR DS:[EAX],AL
  8. 0508D0AC    0000            ADD BYTE PTR DS:[EAX],AL


А также этот.

Code:
  1. 0508D034    B0 F2           MOV AL,0F2
  2. 0508D036    D6              SALC                                     ; Undocumented instruction or encoding
  3. 0508D037    07              POP ES                                   ; Modification of segment register
  4. 0508D038    8007 00         ADD BYTE PTR DS:[EDI],0
  5. 0508D03B    0038            ADD BYTE PTR DS:[EAX],BH
  6. 0508D03D    04 00           ADD AL,0
  7. 0508D03F    0000            ADD BYTE PTR DS:[EAX],AL
  8. 0508D041    0000            ADD BYTE PTR DS:[EAX],AL
  9. 0508D043    0000            ADD BYTE PTR DS:[EAX],AL
  10. 0508D045    0000            ADD BYTE PTR DS:[EAX],AL


И этот?

Место вылета одно и тоже при пропатчивании хоть 1600 или 1920.

-----
Ламер - не профессия :))





Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 01 апреля 2013 21:42
· Личное сообщение · #29

это вообще не мусор, а данные скорее всего




Ранг: 111.0 (ветеран), 2thx
Активность: 0.090
Статус: Участник

Создано: 01 апреля 2013 22:11 · Поправил: aspirin
· Личное сообщение · #30

Archer, позабавили
Ещё бы дельным советом поделились, цены б вам не было.

-----
Ламер - не профессия :))





Ранг: 111.0 (ветеран), 2thx
Активность: 0.090
Статус: Участник

Создано: 07 апреля 2013 12:57
· Личное сообщение · #31

Итак, пропатчил я другие координаты - 1024х768 под 1920х1080, с константами проблем не возникло, их как ни странно, оказалось меньше, чем под другие разрешения. Потестировал вчера весь вечер, причина оказалась не в .ехе. Размеры текстур заданы для каждого разрешения в скриптах, чтобы их увидеть, надо распаковать .ехе. Если подгонять стандартные размеры текстур под более высокое разрешение вертикали, то игра перестаёт стабильно работать, в этом и была причина. Я просто вернул прежние координаты, и всё заработало, но в итоге остались справа пустые места. Кто опытный по текстурам, подскажите, я могу каким-либо образом дважды использовать имеющиеся текстуры? Впринципе, в игре есть статические текстуры, не имеющие текста, как бы их продублировать, чтобы заполнить вертикаль? Можно было бы и свои вставить, но как это сделать? На картинке понятно, о чём речь:



-----
Ламер - не профессия :))



<< . 1 . 2 . 3 . >>
 eXeL@B —› Вопросы новичков —› Как научить видеть игру широкоформатные мониторы?
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати