Не совсем понял идею...
Вид для печати
Идея такая - в отладчик, по аналогии с break points, добавить watch points. Встретив такой watch point, эмулятор не останавливается, а на основном экране выделяет или подсвечивает знакоместо, строку, линию растра (не знаю, что будет удобнее). Расставив такие "точки наблюдения", можно наглядно видеть, что где выполняется относительно начала кадра.
inozemcew, понял, подумаю, но, к сожалению, в ближайшее время скорее всего сделать подобное по ряду причин не получится :(
К сожалению, пока так и не выбрался подцепить ЭЛТ-монитор к реалу, зато обзавелся монитором с поддержкой FreeSync.
В общем, если на мониторе и в настройках видеокарты включить FreeSync/GSync, а в настройках Emu80 выключить vsync и ограничение FPS, то выглядит очень даже здорово :)
Думаю, на ЭЛТ будет еще лучше, постараюсь в ближайшие выходные все-таки достать монитор и проверить.
Насчет самой идеи написания игр: было бы весьма неплохо собрать справочные материалы в одном месте. Особенно по работе с экраном и псевдографикой. Набросал под стандартный режим расчет байта атрибутов, расчет адреса для него и настройку видеоконтроллера. Может кому и пригодится. Лично мне бы было весьма интересно узнать, как скрывать байты атрибутов с экрана. Но это просто для справки, едва ли я что-то хоть сколько-нибудь серьезное буду писать для РК...
https://youtu.be/iw9TJYayE50
Я так примерно и собираю материалы и куски кода. Получается некий движок. Вывод спрайтов, звук на ВИ53, расчёт ячейки видеопамяти по координатам, ГПСЧ, сканирование клавиатуры, инициализация видео, коллизии и другой код - собрано в кучку и описано обильно текстом. Всё в группе ТГ, если нужно, пишите в ЛС, дам ссылку.
ну, раз пошла такая пьянка, может будет полезна моя новогодняя ёлка для изучения атрибутов -- https://github.com/radio-86rk/tree2025.rk
Народ, может есть у кого? Ищу реализацию рисования линий алгоритмом брезенхема на ассемблере 8080. Рисование точки сам вроде справился - а здесь как то затык, для меня сложно. Может кто уже проходил это?
Брезенхем очень медленный для РК. И опять же, смотря для какого разрешения. Если ширина экрана больше 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
Онлайн демка с рисованием световым пером.
Правда, там прорисовка не отдельными точками псевдографики, а блоками.
Не удалось отладить: Некоторые линии выводятся идеально, другие - сильно глючат.
https://rutube.ru/video/c941e897377f3db01e4d5ce283e8e120/