![]() |
Мерцание спрайтов
Только недавно стал начинающим правщиком задержек под пентагон-стандарт, чтоб спрайты не мерцали. В 90% играх это достаточно легко - обычно задержки регулируются подобным образом:
ld bc,1000 m1: dec bc ld a,b or с jr nz,m1 Эта хрень стоит там, где процедуры вывода графики на экран (вроде как после них). Регулируя значение в BC можно добиться отсутствия мерцания. Но вот, что делать, если прямых процедур с задержками нет? Вот уже долго бьюсь с играми Super Wonder Boy (там, когда нажимаешь кнопку паузы по бордеру должна бежать надпись) и Ghouls'n'Ghosts (мерцают спрайты вверху экрана). Мож, кто поможет?.. |
Там скорее всего задержки нужно в мегакод ставлять. Если он генерится, то в процедуру генерации мегакода нулей добавить между выводом бордюрных сток.
|
У-у-у-у... :( Как все сложно... А пальцем тыкнуть можешь?..
|
Сорри, что влез не по делу...
Слайдер, ты уже 15лет делаешь дисковые версии игр, и так упорно не желаешь изучить ассемблер, тебе что, не интересно ? Давно бы разобрался сам. Проще конечно прицепить лейблик, дискет бай Слайдер... |
Слайдер, не слушай его! Ты - крут! В чужом коде копаться - я никогда не мог себя заставить без содрогания.
|
Quote:
В этих штуках, о которых я завел речь, только-только начал разбираться (спасибо Гудбою). Думаю, со временем (которого как всегда децильняк и только на то, чтоб лейблик прицепить его и хватает) все же разберусь. Но помощь нужна СЕЙЧАС! |
Quote:
|
Процедура вывода бордюрного скролла по адресу B058h.
В начале её в BC стоит значение задержки для вертикального положения скоролла. Далее идёт список комант типа out (c), регистр. И сразу на ними два NOP'а. Это и есть задержка, количество NOP'ов нужно эксперементально изменять и смотреть на результат. Далее идут аналогичные конструкции, там всё также. Мегакод очень простой :) Для удобства лучше этот скролл дизасемблировать, настоить отдельно... и потом оптимизировать под исходный размер кода. |
Это я так понимаю, слово "pause" в Super Wonder Boy. Спасибо!
А глянь еще, плз, Ghouls'n'Ghosts!.. |
Quote:
|
Ну да, обычно так и бывает - ei:halt и рядышком задержка... но тут не так... или я не нашёл... :(
|
Основной цикл игры, где процеруды вывода по адресу 8A9Ch. Вызов происходит из прерывания которое указывает на адрес 8A79h.
Процедура 8204h - очистка экрана Процедура A17Dh - вывод спрайтов Для коррекции необходими доработка (вставка задержки): ORG #5CA6 LD BC,100 ; значение подбираем экперементально. M1: DEC BC LD A,B OR C JR NZ,M1 JP #8A9C ORG #87C4 LD HL,#5CA6 ; меняем адрес CALL'а перерывания во время игры. всё :) |
Мегаспасибо Доктору Барсу!!! Теперь, надеюсь, по свободе доделаю оба релиза! Респект, дружище!!!
|
Дерзай :) Главное заморочиться :D
|
| All times are GMT +4. The time now is 00:25. |
Powered by vBulletin® Version 3.8.3
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.