Идея такая - в отладчик, по аналогии с break points, добавить watch points. Встретив такой watch point, эмулятор не останавливается, а на основном экране выделяет или подсвечивает знакоместо, строку, линию растра (не знаю, что будет удобнее). Расставив такие "точки наблюдения", можно наглядно видеть, что где выполняется относительно начала кадра.
inozemcew, понял, подумаю, но, к сожалению, в ближайшее время скорее всего сделать подобное по ряду причин не получится![]()
К сожалению, пока так и не выбрался подцепить ЭЛТ-монитор к реалу, зато обзавелся монитором с поддержкой FreeSync.
В общем, если на мониторе и в настройках видеокарты включить FreeSync/GSync, а в настройках Emu80 выключить vsync и ограничение FPS, то выглядит очень даже здорово
Думаю, на ЭЛТ будет еще лучше, постараюсь в ближайшие выходные все-таки достать монитор и проверить.
Насчет самой идеи написания игр: было бы весьма неплохо собрать справочные материалы в одном месте. Особенно по работе с экраном и псевдографикой. Набросал под стандартный режим расчет байта атрибутов, расчет адреса для него и настройку видеоконтроллера. Может кому и пригодится. Лично мне бы было весьма интересно узнать, как скрывать байты атрибутов с экрана. Но это просто для справки, едва ли я что-то хоть сколько-нибудь серьезное буду писать для РК...
Я так примерно и собираю материалы и куски кода. Получается некий движок. Вывод спрайтов, звук на ВИ53, расчёт ячейки видеопамяти по координатам, ГПСЧ, сканирование клавиатуры, инициализация видео, коллизии и другой код - собрано в кучку и описано обильно текстом. Всё в группе ТГ, если нужно, пишите в ЛС, дам ссылку.
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
ну, раз пошла такая пьянка, может будет полезна моя новогодняя ёлка для изучения атрибутов -- https://github.com/radio-86rk/tree2025.rk
Oleg N. Cher(02.09.2025), Pyk(04.09.2025)
Народ, может есть у кого? Ищу реализацию рисования линий алгоритмом брезенхема на ассемблере 8080. Рисование точки сам вроде справился - а здесь как то затык, для меня сложно. Может кто уже проходил это?
Радио86 рк (Пальмира), Электроника кр04, Поиск 1
Брезенхем очень медленный для РК. И опять же, смотря для какого разрешения. Если ширина экрана больше 128 точек, то уже надо придумывать двухбайтовое знаковое сложение/вычитание, которого в 8080 нет. Тут надо что-то сильно проще использовать.
Как-то вот так:Правда, здесь цикл бесконечный с пошаговым отображением координат.Код:MVI L,10 ; X1 = 10 MVI H,50 ; Y1 = 50 MVI E,60 ; X2 = 60 MVI D,30 ; Y2 = 30 ;;;;;;;;;;;;;;;;; MOV A,E SUB L ; DX = X2 - X1 JNC LDX CMA INR A ; DX = -DX LDX: MOV E,A SBB A ORI 001H MOV C,A ; C = SGN(X2 - X1) ;;;;;;;;;;;;;;;;; MOV A,D SUB H ; DY = Y2 - Y1 JNC LDY CMA INR A ; DY = -DY LDY: MOV D,A SBB A ORI 001H MOV B,A ; B = SGN(Y2 - Y1) ;;;;;;;;;;;;;;;;; MOV A,D CMP E ; IF DX < DY JC L1 MOV D,E MOV E,A ; THEN SWAP DX,DY ;;;;;;;;;;;;;;;;; L1: MOV A,E ORA A RAR ; A = DX >> 1 ;;;;;;;;;;;;;;;;; L2: CALL PUTDOT PUSH PSW MOV A,L ADD C MOV L,A ; X += DX POP PSW SUB D ; A -= DY JNC L2 ; IF A >= 0 THEN GOTO L2 PUSH PSW MOV A,H ADD B MOV H,A POP PSW ADD E ; A += DX JMP L2 PUTDOT: PUSH PSW PUSH B MVI C,00AH CALL 0F809H MVI C,00DH CALL 0F809H CALL 0F815H MVI C,02FH CALL 0F809H MOV A,D CALL 0F815H MVI C,020H CALL 0F809H MOV A,H CALL 0F815H MOV A,L CALL 0F815H CALL 0F803H POP B POP PSW RET
Онлайн демка с рисованием световым пером.
Правда, там прорисовка не отдельными точками псевдографики, а блоками.
Не удалось отладить: Некоторые линии выводятся идеально, другие - сильно глючат.
Последний раз редактировалось Alikberov; 04.09.2025 в 14:36.
Электроника КР-03; ZX-Spectrum "Ленинград-48"; Atari-130XE; Поиск-1...
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)