Программирование > Общие вопросы Assembler
Пишем новые функции в КЛЕО
(1/1)
mfisto:
Хочу написать здесь интересную инфу, про написание некоторых полезных функции, прибегая в асм вставкам.
Это вполне касается GTA 3, так как там не хватает нек-рых опкодов.
Вот эти функции:
AND
NOT
OR
Что мы делаем, а вот что пишем следующее:
--- Код: ---:_func_and_
hex
8B 44 24 04 8B 4C 24 08 21 C8 C3 90
end
:_func_or_
hex
8B 44 24 04 8B 4C 24 08 09 C8 C3 90
end
:_func_not_
hex
8B 44 24 04 F7 D0 C3 90
end
--- Конец кода ---
Это и будут наши функции (асм вставки).
Далее
--- Код: ---05F5: call_scm_func @getLabelOffset 1 label @_func_and_ store_to 13@
05E2: call_function 13@ num_params 2 pop 2 14@ 4 15@
05F5: call_scm_func @getLabelOffset 1 label @_func_or_ store_to 13@
05E2: call_function 13@ num_params 2 pop 2 14@ 4 15@
05F5: call_scm_func @getLabelOffset 1 label @_func_not_ store_to 13@
05E2: call_function 13@ num_params 1 pop 1 14@ 15@
--- Конец кода ---
Вот выше - это будет их вызов.
Где в вызове функции and и or я беру два параметра 14@ и 4, а получаю в 15@
А сама цсм функция getlabelOffset выглядит так:
--- Код: ---:getLabelOffset
{ Example:
05F5: call_scm_func @getLabelOffset 1 label @lbl store_to 0@
}
if
0@ <> 0
then
05EC: 1@ = current_thread_pointer
1@ += 0x98
05E0: 1@ = read_memory 1@ size 4 virtual_protect 0
0062: 1@ -= 0@
else
1@ = 0
end
05F6: ret 1 1@
--- Конец кода ---
Sektor:
Хм, полезный мануал, молодец mfisto
Shagg_E:
Кто бы еще написал туториал про использование AND, OR, XOR, NOT в скриптинге GTA...
Навигация
Перейти к полной версии