Просмотр полной версии : процедура для выравнивания INT на нулевой такт
Есть у кого-то готовая процедура для выравнивания INT на нулевой такт?
Если нет, может есть идеи как это практичней реализовать?
NEO SPECTRUMAN
06.10.2011, 23:25
INT FILTER ONLY FOR PENTAGON-128
http://zxpress.ru/book_articles.php?id=552
Похоже такие проги нужно подгонять под каждую машину.
INT FILTER ONLY FOR PENTAGON-128
http://zxpress.ru/book_articles.php?id=552
Похоже такие проги нужно подгонять под каждую машину.
Но, в любом случае, время исполнения одной и той же команды могло быть непостоянным, так что ни о какой полноценной синхронизации для создания тонких цветовых эффектов не могло быть и речи.
как-то это плохо соотносится с мультиколорными демами MDA DEMO, SHINY48, игре Defenders Of The Earth, и т.д. Где мультиколор и тексты на бордюре ничем не хуже чем в демах на пентагон :)
Насчет FILTER - то что нужно, только где-бы взять ее исходный код в нормальном виде? В тексте статьи он покоцан и разнесен по таблицам :(
FILTER - то что нужно, только где-бы взять ее исходный код в нормальном виде?
http://vtrdos.ru/book/REVU9645.ZIP
Не оно? - http://zx.pk.ru/showthread.php?t=13836&page=3
Не оно? - http://zx.pk.ru/showthread.php?t=13836&page=3
не, дрожание - это некратное число тактов в кадре, тут речь о том чтобы сдвига на 0..3 такта не было в момент прихода прерывания
Это не устранение дрожания. Это п/программа, которая позволяет запускать последуюшую за ней программу с одного и того-же места прорисовки растра.
Автор - alone. Посмотри как работает.
Есть у кого-то готовая процедура для выравнивания INT на нулевой такт?
Если нет, может есть идеи как это практичней реализовать?
Такой процедуры нет, все делается ручками!!!
VNN правильно написал это только первоначально можно подправить 0-3 такта, остальное руками
---------- Post added at 19:37 ---------- Previous post was at 19:35 ----------
Это не устранение дрожания. Это п/программа, которая позволяет запускать последуюшую за ней программу с одного и того-же места прорисовки растра.
Если в последующей процедуре имеются ветвления (т.е. разное кол-во тактов) то эта программа не о чем
---------- Post added at 19:38 ---------- Previous post was at 19:37 ----------
Посмотри как работает.
Выложи в тексте а то на диске файл *.H просто не знаю в чем это смотреть?
Выложи в тексте а то на диске файл *.H просто не знаю в чем это смотреть?
Запусти Best View. Загрузи то, что надо, нажми в нём CAPS+T и... никаких проблем. Текстовик в твоём распоряжении. Токо перевести в твой формат. Я же тебе уже делал.
---------- Post added at 17:40 ---------- Previous post was at 17:38 ----------
сли в последующей процедуре имеются ветвления (т.е. разное кол-во тактов) то эта программа не о чем
Токо если рисунок на бордюре линейный, то по барабану. Ну почти по борабану.
---------- Post added at 17:52 ---------- Previous post was at 17:40 ----------
Если в последующей процедуре имеются ветвления (т.е. разное кол-во тактов) то эта программа не о чем
А ты придумай, чтоб не "смыкалось". Я изгалялся. А что делать!
---------- Post added at 17:57 ---------- Previous post was at 17:52 ----------
Выложи в тексте а то на диске файл *.H просто не знаю в чем это смотреть?
Дык постом выше лежит.
Такой процедуры нет, все делается ручками!!!
VNN правильно написал это только первоначально можно подправить 0-3 такта, остальное руками
зачем руками? есть такая процедура, все автоматом подстраивается, вот она:
FILTER:
DI
LD HL,INT
LD (#81FF),HL
LD A,0
LD (BUFF+4),A
LD E,1
LD HL,BUFF
LD A,#81
LD I,A
IM 2
EI
HALT
CALL WAIT
INC E
CALL WAIT
INC E
CALL WAIT
INC E
DI
LD BC,2749
LD HL,(BUFF+1)
EX DE,HL
LD HL,(BUFF+3)
LD A,H
OR A
JR NZ,F2
F0:
LD A,L
CP 4
JR Z,DISP3
LD A,D
CP L
JR Z,DISP2
LD A,E
CP D
JR Z,DISP1
DISP0:
NOP
LD R,A
LD R,A
F1:
DEC BC
LD A,B
OR C
JR NZ,F1
RET
F2:
LD E,D
LD D,L
LD L,H
DEC BC
DEC BC
LD A,(HL)
NOP
JR F0
DISP1:
DEC BC
NOP
JR DISP0
DISP2:
JR DISP0
DISP3:
LD R,A
LD A,(HL)
JR DISP0
WAIT:
LD BC,2753
W1:
DEC BC
LD A,B
OR C
JR NZ,W1
LD B,(HL)
RET
INT:
LD (HL),E
INC HL
LD D,(HL)
LD D,(HL)
EI
RET
BUFF:
DEFS 5
расчитана разумеется на без-WAIT'овые машины. На WAIT'овых машинах свои способы, например на фирменном ULA достаточно HALT сделать перед прохождением строки paper'а.
зачем руками? есть такая процедура, все автоматом подстраивается, вот она:
Допустим, моя процедура вывода статического изображения на бордюр в каждое прерывание выполняется за 8000-8024 такта. Подскажите как мне использовать процедуру выше, чтоб мое изображение осталось статичным? :)))))
Сделай так, чтоб всегда было 8024 такта т.е., по максимуму. Введи команды , которые ничего не испортят в твоей проге, а будут только для "выравнивания" по тактам. Вот и всё. И ещё - не используй переходы по условию как JR. Делай JP. Тогда и при выполнении условия и при невыполнеии будет 10 тактов.
Сделай так, чтоб всегда было 8024 такта т.е., по максимуму. Введи команды , которые ничего не испортят в твоей проге, а будут только для "выравнивания" по тактам. Вот и всё. И ещё - не используй переходы по условию как JR. Делай JP. Тогда и при выполнении условия и при невыполнеии будет 10 тактов.
Да я в курсе, как это делается. Я про программу в посте #10, как она может сделать это?
---------- Post added at 04:38 ---------- Previous post was at 04:22 ----------
VNN_KCS, придумай универсальную задержку, чтоб каждое прерывание начиналось с одного и того же такта (не учитывая сколько там программа покушала), я вот даже собразить на эту тему ничего не могу
У меня на это мозгов не хватит, повысыхали уже ;-). Надо спецов попросить. Я обычно делаю каждый раз по разному, вручную.
выше, чтоб мое изображение осталось статичным?
Общее число тактов твоего кода должно делиться на 4-ре. Учитывать нужно и вызов самого прерывания. Но я это подстраиваю руками.
Выше приведённую процедуру нужно просто вызвать перед инициализацией прерывания твоего для твоего эффекта. Далее, в принципе, не важны сдвиги, главное это подстройка перед эффектом.
Однако эта процедура для подстройки использует прерывание, и всё в ней заточено под саму себя. То есть, если сейчас играет музыка, и в этот момент тебе нужно подстроиться, то данная процедура простым копи-пастом не заработает. Поэтому нужно руками делать эту процедуру и подстраивать под свою дему.
Допустим, моя процедура вывода статического изображения на бордюр в каждое прерывание выполняется за 8000-8024 такта. Подскажите как мне использовать процедуру выше, чтоб мое изображение осталось статичным? :)))))
речь шла о том как подстроить начальное смещение на момент прерывания. Если твоя отрисовка нестабильна и постоянно сбивает смещение, то эта процедура тебе не поможет. В таком случае нужно править отрисовку, чтобы ее код был стабильно кратным 4 тактам.
VNN_KCS, придумай универсальную задержку, чтоб каждое прерывание начиналось с одного и того же такта (не учитывая сколько там программа покушала), я вот даже собразить на эту тему ничего не могу
Такого естественно нельзя сделать. Тут даже я понимаю.
Вопрос реальным кодерам - а можно сделать так, чтоб программа на прерывыния выравнивала такты программы? Понимаю реакцию, как так?! А вот если основная прога тоже чё-то посчитает и выдаст свои данные. А прога на прерываниях "подрихтует" Ессно не основная, а подпрограмма.
Может и невозможно, но ......
Powered by vBulletin® Version 4.2.5 Copyright © 2026 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot