Ну, компилятор "с зауминами", но к стилю уже немного привыкается (лишь бы не разучится нормальному ассемблеру).
Часть процедур (арифметика, булевы, сравнения) для работы с базовым типом i16 уже отмечены, циклы (похожие на бывший FOR до компиляции) очень узнаваемы - предустановка нескольких переменных начальное/конечное/шаг в памяти, туда же адрес начала цикла, сразу перед этим самым адресом... в хвосте цикла, где был NEXT, всегда jp (hl). Также через jp (hl) вызов нескольких процедур в кодах (чуть почище, чем от компилятора) в районе Cxxxh.
Вот, например, одна из неприятностей в игре: при приземлении и прогулке за ключом, при походах от дверей и особенно - к двери очень донимает живность, съедая до половины жизни.
По адресу 0x8628 идет код примерно с такой логикой
Скрытый текст
if obj.type!=OT_LAVA { random(60) } else { 20000 }
[свернуть]
как раз задающий время "страха" NPC, пока оно не бросится в атаку. Если прибавить константу к случайному числу, то NPC никогда не будут бросаться сразу. Подобрать только константу.
Кстати, из этого кода также следует, что у лавы из вулкана терпение тоже не безгранично. Если долго-долго ждать, лава бросится на нас.





Ответить с цитированием