Speccy - наш выбор!

Speccy - наш выбор! (http://zx-pk.ru/index.php)
-   Для начинающих (http://zx-pk.ru/forumdisplay.php?f=43)
-   -   Мерцание спрайтов (http://zx-pk.ru/showthread.php?t=10629)

Slider 27th July 2009 14:05

Мерцание спрайтов
 
Только недавно стал начинающим правщиком задержек под пентагон-стандарт, чтоб спрайты не мерцали. В 90% играх это достаточно легко - обычно задержки регулируются подобным образом:
ld bc,1000
m1: dec bc
ld a,b
or с
jr nz,m1
Эта хрень стоит там, где процедуры вывода графики на экран (вроде как после них). Регулируя значение в BC можно добиться отсутствия мерцания.
Но вот, что делать, если прямых процедур с задержками нет? Вот уже долго бьюсь с играми Super Wonder Boy (там, когда нажимаешь кнопку паузы по бордеру должна бежать надпись) и Ghouls'n'Ghosts (мерцают спрайты вверху экрана).
Мож, кто поможет?..

drbars 27th July 2009 21:48

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

Slider 29th July 2009 01:44

У-у-у-у... :( Как все сложно... А пальцем тыкнуть можешь?..

White_Hunter 29th July 2009 13:51

Сорри, что влез не по делу...
Слайдер, ты уже 15лет делаешь дисковые версии игр, и так упорно не желаешь изучить ассемблер, тебе что, не интересно ? Давно бы разобрался сам.
Проще конечно прицепить лейблик, дискет бай Слайдер...

valeron 29th July 2009 20:08

Слайдер, не слушай его! Ты - крут! В чужом коде копаться - я никогда не мог себя заставить без содрогания.

Slider 30th July 2009 00:29

Quote:

Originally Posted by White_Hunter (Post 210762)
Слайдер, ты уже 15лет делаешь дисковые версии игр, и так упорно не желаешь изучить ассемблер, тебе что, не интересно ? Давно бы разобрался сам.
Проще конечно прицепить лейблик, дискет бай Слайдер...

Хочешь, даже лейбликов цеплять не буду?.. ;) Я так понимаю, что все равно бесполезным делом занимаюсь. И в ассемблере не бум-бум... :(
В этих штуках, о которых я завел речь, только-только начал разбираться (спасибо Гудбою). Думаю, со временем (которого как всегда децильняк и только на то, чтоб лейблик прицепить его и хватает) все же разберусь. Но помощь нужна СЕЙЧАС!

SoftLight 30th July 2009 15:22

Quote:

Originally Posted by Slider (Post 210862)
Хочешь, даже лейбликов цеплять не буду?.. ;) Я так понимаю, что все равно бесполезным делом занимаюсь. И в ассемблере не бум-бум... :(

Нет уж, амиго! От кого же мы тогда будем ждать новые дисковые версии?! И так уже не осталось почти релизеров и от тебя последнее время что-то тихо :) прямо грустно. Дело твое полезное, даж не сомневайся! ;)

drbars 31st July 2009 14:41

Процедура вывода бордюрного скролла по адресу B058h.
В начале её в BC стоит значение задержки для вертикального положения скоролла.
Далее идёт список комант типа out (c), регистр. И сразу на ними два NOP'а. Это и есть задержка, количество NOP'ов нужно эксперементально изменять и смотреть на результат. Далее идут аналогичные конструкции, там всё также. Мегакод очень простой :) Для удобства лучше этот скролл дизасемблировать, настоить отдельно... и потом оптимизировать под исходный размер кода.

Slider 3rd August 2009 16:00

Это я так понимаю, слово "pause" в Super Wonder Boy. Спасибо!
А глянь еще, плз, Ghouls'n'Ghosts!..

drbars 3rd August 2009 23:29

Quote:

Originally Posted by Slider (Post 211330)
А глянь еще, плз, Ghouls'n'Ghosts!..

Полагаю тебе нужно найти команду halt в главном цикле. где-то рядом с ней и будет заветная задержка. ;)

Slider 5th August 2009 00:40

Ну да, обычно так и бывает - ei:halt и рядышком задержка... но тут не так... или я не нашёл... :(

drbars 5th August 2009 15:33

Основной цикл игры, где процеруды вывода по адресу 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'а перерывания во время игры.

всё :)

Slider 5th August 2009 20:27

Мегаспасибо Доктору Барсу!!! Теперь, надеюсь, по свободе доделаю оба релиза! Респект, дружище!!!

drbars 5th August 2009 23:51

Дерзай :) Главное заморочиться :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.