IPB

Здравствуйте, гость ( Вход | Регистрация )

2 страниц V  < 1 2  
Reply to this topicStart new topic
> Heroes of Might & Magic III: Shades of Darkness
feanor
сообщение 27 Jan 2013, 03:18
Сообщение #21

laughed as one fey
Сообщений: 11 812
Спасибо сказали: 19681 раз




А теперь обещанное о оборотной стороне вопроса.

Из истории вопроса.

Вообще, в героях есть два способа перекраски игры.

Первый используется при отрисовке черно-белой карты в экране обелисков, при отрисовке окаменевших/клонированных войск, при наложении жажды крови и т.п. В этом случае объект рисуется через функцию Draw_0044E610_grayscaleOrMore, в которой он "на лету" перекрашивается под нужный колёр и рисуется в экранном буфере.
Бараторч упоминал, что скорость работы функции удручает, я соглашусь (там для каждого пикселя выполняется несколько операций с плавающей точкой) и это все о ней на сей момент.

Второй используется при использовании чита wogsarumanofmanycolors (nwcphisherprice для ортодоксов). В этом случае ресурсы подкрашиваются не на этапе отрисовки, а на этапе загрузки либо взятия из кэша. Для ресурсов с индексированными цветами, по всей видимости, красится палитра, для неиндексированных - битмап целиком. Это дает некоторое едва заметное замедление при загрузке, но потом все рисуется столь же быстро, сколь и при нормальных условиях.
Из минусов - раз включив эту фичу, отключить её сложно: необходимо перезагрузить все перекрашенные ресурсы - а по умолчанию не все из них перезагружаются даже при рестарте карты. Собственно, запустите героев c сабжем, наберите wogsarumanofmanycolors (который будет работать как отключалка тонировки - см. ниже) и попытайтесь избавиться от фиолетового.

Матчасть.

Изменение цвета описывается четырьмя параметрами (точнее, восьмью тетрадами - оно в экзешнике встречается восемь раз):
- яркость. Обычный HSLный Lightness. По умолчанию - 1, wogsarumanofmanycolors поднимает её до 1.2. Меньше - темнее (до абсолютной черноты при 0), выше - светлее
- насыщенность. Не менее обычное Brightness. По умолчанию - 1, чит поднимает её до 1.5. Меньше - более тусклые оттенки (до черно-белых при 0), больше - более контрастные.
- степень проявленности цвета и цвет. А вот тут начинается интересное, ибо эти два параметра к, казалось бы, ожидаемому Hue отношение имеют опосредованное. Нет, "цвет" отчасти похож на Hue, хоть и варьируется не от 0 до 360, а от 0 до 1 (0 - красный, 0,33 - зеленый, 0,75 - фиолетовый из ShoD etc), однако его изменение ничего не меняет в игре. Для привнесения изменений нужно задать степень проявленности цвета - опять же, от 0 (нету изменений) до 1 (все будет перекрашено только в этот цвет)

Алсо, в игре имеется флаг, показывающий, включена ли перекраска - но это довольно очевидно.

Адреса и явки.


CODE
*(int*)0x69E600 = 1; //флаг

/*float p4 = 1.2;
float p3 = 1.5;
float p2 = -1.0;
float p1 = -1.0;*/ wogsarumanofmanycolors


float p4 = 1; //darker - 1 - brighter (Lightness)
float p3 = 1; //grayscale - 1 - colorfool (Brightness)

float p2 = 1; //1,0 - red (color value - color hue)
float p1 = 0.75;


*(float*)0x55AD09 = p4;
*(float*)0x55AD0E = p3;
*(float*)0x55AD13 = p2;
*(float*)0x55AD18 = p1;

*(float*)0x55AF0A = p4;
*(float*)0x55AF0F = p3;
*(float*)0x55AF14 = p2;
*(float*)0x55AF19 = p1;

*(float*)0x55B137 = p4;
*(float*)0x55B13C = p3;
*(float*)0x55B141 = p2;
*(float*)0x55B146 = p1;

*(float*)0x55B330 = p4;
*(float*)0x55B335 = p3;
*(float*)0x55B33A = p2;
*(float*)0x55B33F = p1;

*(float*)0x55B550 = p4;
*(float*)0x55B555 = p3;
*(float*)0x55B55A = p2;
*(float*)0x55B55F = p1;

*(float*)0x55B756 = p4;
*(float*)0x55B75B = p3;
*(float*)0x55B760 = p2;
*(float*)0x55B765 = p1;

*(float*)0x55B924 = p4;
*(float*)0x55B929 = p3;
*(float*)0x55B92E = p2;
*(float*)0x55B933 = p1;

*(float*)0x55CFB0 = p4;
*(float*)0x55CFB5 = p3;
*(float*)0x55CFBA = p2;
*(float*)0x55CFBF = p1;


Как видно из кода, все это, в общем, можно зашить в обычный патч или даже в UN:C команду.
Дллка была выбрана исключительно из-за нежелания париться с переводом 32-bit float в машинное представление - это все же не самая очевидная процедура на свете.


--------------------


Спасибо сказали:
Go to the top of the pageAdd Nick
 
+Quote Post
Mefista
сообщение 30 Jan 2013, 23:30
Сообщение #22

Крайне средняя кошка
Сообщений: 2 073
Спасибо сказали: 4360 раз




Вашу мать,Зилот,можно хотя бы день на меня не ссылаться...
Хотела серъёзный вопрос про палитры-можно сделать так,чтобы всё было раскрашено как в Покемоне (первых двух играх,если их в Gameboy Colour ставить)?


--------------------
Go to the top of the pageAdd Nick
 
+Quote Post
Mefista
сообщение 30 Jan 2013, 23:56
Сообщение #23

Крайне средняя кошка
Сообщений: 2 073
Спасибо сказали: 4360 раз




Berserker
Я-то думала,мы все давно не в третьем классе...
feanor
Там-пастельная гамма и по два-три цвета на каждый спрайт)


--------------------
Go to the top of the pageAdd Nick
 
+Quote Post
feanor
сообщение 31 Jan 2013, 00:34
Сообщение #24

laughed as one fey
Сообщений: 11 812
Спасибо сказали: 19681 раз




Цитата
Там-пастельная гамма и по два-три цвета на каждый спрайт)

Вряд ли.

Стандартными средствами хорошо только тонировать в красный-синий-фиолетовый и регулировать яркость.
Все другое получается омерзительно.


--------------------
Go to the top of the pageAdd Nick
 
+Quote Post
Iv
сообщение 01 Feb 2013, 11:40
Сообщение #25

Immortal
Сообщений: 6 158
Спасибо сказали: 12378 раз




Оффтопик и флуд перенесены в соответствующую тему



--------------------


Спасибо сказали:
Go to the top of the pageAdd Nick
 
+Quote Post
Mugaisa
сообщение 01 Feb 2013, 11:49
Сообщение #26

Immortal
Сообщений: 6 237
Спасибо сказали: 6988 раз




Так толсто, что даже тонко.


--------------------
Cyberpunk not dead!
Go to the top of the pageAdd Nick
 
+Quote Post
feanor
сообщение 01 Feb 2013, 13:50
Сообщение #27

laughed as one fey
Сообщений: 11 812
Спасибо сказали: 19681 раз




Цитата
Так толсто, что даже тонко.

В сабже, как бы, нету троллинга вот вообще.


--------------------
Go to the top of the pageAdd Nick
 
+Quote Post
Berserker
сообщение 27 Feb 2013, 21:32
Сообщение #28

Immortal
Сообщений: 1 427
Спасибо сказали: 898 раз




Доигрался, однако.


--------------------


Спасибо сказали:
Go to the top of the pageAdd Nick
 
+Quote Post
magoth
сообщение 27 Feb 2013, 21:35 (Сообщение отредактировал magoth - 27 Feb 2013, 21:36)
Сообщение #29

Immortal
Сообщений: 704
Спасибо сказали: 364 раза




Berserker
Никак китайских героев ставил ?! )))
Go to the top of the pageAdd Nick
 
+Quote Post
Doctor Tea
сообщение 27 Feb 2013, 21:39
Сообщение #30

Свободный волк
Сообщений: 1 900
Спасибо сказали: 698 раз




Ололо... Ужасающий баг...


--------------------
Go to the top of the pageAdd Nick
 
+Quote Post
Berserker
сообщение 27 Feb 2013, 23:54
Сообщение #31

Immortal
Сообщений: 1 427
Спасибо сказали: 898 раз




Это режим кровавой ярости. Вместо символов рисуется розовый флаг.


--------------------
Go to the top of the pageAdd Nick
 
+Quote Post
Mefista
сообщение 28 Feb 2013, 02:18
Сообщение #32

Крайне средняя кошка
Сообщений: 2 073
Спасибо сказали: 4360 раз




5баллов. Напоминает мне тот раз, когда у меня в покемоне половина надписей в меню превратилась в куски Бульбазавра


--------------------


Спасибо сказали:
Go to the top of the pageAdd Nick
 
+Quote Post
Berserker
сообщение 28 Feb 2013, 19:08
Сообщение #33

Immortal
Сообщений: 1 427
Спасибо сказали: 898 раз




А это уже отрисовка дефа. «Нужно больше дерева!»


--------------------
Go to the top of the pageAdd Nick
 
+Quote Post
Bes
сообщение 08 Mar 2013, 16:48 (Сообщение отредактировал Bes - 08 Mar 2013, 19:23)
Сообщение #34

замолкаю.
Сообщений: 2 332
Спасибо сказали: 977 раз




feanor, ту да же )))


--------------------


Спасибо сказали:
Go to the top of the pageAdd Nick
 
+Quote Post
feanor
сообщение 01 Apr 2019, 22:40
Сообщение #35

laughed as one fey
Сообщений: 11 812
Спасибо сказали: 19681 раз




Теперь и в редакторе!



https://www.dropbox.com/s/af5dfnenr2htd8u/SHoD.7z


--------------------


Спасибо сказали:
Go to the top of the pageAdd Nick
 
+Quote Post

2 страниц V  < 1 2
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 19 September 2019 - 07:07
Copyright by Алексей Крючков
Strategy Gamez by GrayMage
Programming by Degtyarev Dmitry
  Яндекс.Метрика