Есть у кого-нибудь процедурка?
Под пентагон/реал 128к.
Вид для печати
Есть у кого-нибудь процедурка?
Под пентагон/реал 128к.
Полноэкранный возможен только 8х2. см. исходники IRIS'а.. часть Color movie
Код:CODE_INS1:
LD B,24
INS_L PUSH BC
CALL SETLINE
CALL SETLINE
CALL SETLINE
CALL SETLINE
LD BC,32
LD HL,(TO+1)
ADD HL,BC
LD (TO+1),HL
LD HL,(TO2+1)
ADD HL,BC
LD (TO2+1),HL
POP BC
DJNZ INS_L
RET
SETLINE LD HL,SAMPLE1
MEMPC LD DE,COLORCODE
LD BC,EOS1-SAMPLE1
LD A,(PAGE+1)
XOR 10
LD (PAGE+1),A
AND 8
JR NZ,$+5
DEC BC
DEC BC
DEC BC
LDIR
LD (MEMPC+1),DE
RET
SAMPLE1 LD SP,0
POP HL
POP DE
POP AF
POP IX
EX AF,AF'
EXX
POP HL
POP DE
POP BC
POP AF
TO LD SP,#D810
PUSH AF
PUSH BC
PUSH DE
PUSH HL
EXX
EX AF,AF'
PUSH IX
PUSH AF
PUSH DE
PUSH HL
LD SP,0
POP HL
POP DE
POP AF
POP IX
EX AF,AF'
EXX
POP HL
POP DE
POP BC
POP AF
TO2 LD SP,#D820
PUSH AF
PUSH BC
PUSH DE
PUSH HL
EXX
EX AF,AF'
PUSH IX
PUSH AF
PUSH DE
PUSH HL
PAGE: LD A,#1D
OUT (C),A
LD HL,#FFFF
EOS1:
;----------------------------
CODE_INS2:
LD DE,INSCODE
LD B,48
CDI2 PUSH BC
LD HL,SAMPLE2
LD BC,EOS2-SAMPLE2
LDIR
LD HL,SAMPLE2+1
LD B,4
NX_ADD LD A,(HL)
ADD A,123
LD (HL),A
INC HL
JR NC,$+3
INC (HL)
INC HL
INC HL
INC HL
DJNZ NX_ADD
POP BC
DJNZ CDI2
RET
SAMPLE2 LD (COLORCODE+1),HL
ADD HL,BC
LD (COLORCODE+#1D),HL
ADD HL,BC
LD (COLORCODE+#3D),HL
ADD HL,BC
LD (COLORCODE+#59),HL
ADD HL,BC
EOS2:
Код:one_int LD BC,#6FF
DI
LD HL,IMER
LD (#BEFF),HL
LD A,#BE
LD I,A
IM 2
BACK XOR A
LD HL,LOOP
EI
LOOP DEC A
JP (HL)
IMER POP HL
LD E,(HL)
RL E
RLA
LD E,D
LD D,A
SUB E
SUB C
SBC A,A
OR 4
DEC B
AND B
JR NZ,BACK
У меня 144 пикселя.
---------- Post added at 16:00 ---------- Previous post was at 15:59 ----------
GM BIT, прокоментируй, что это куда и как встявлять?
Запускаешь вначале, а потом кодишь кратно четырем и с одинаковым количеством тактов в каждом прерывании, вроде бы так
Работоспособность не проверял, но эту програмку много раз приводили на форуме
Зачем она трогает IM2 при этом не делая табличку прерваний?
По смылу понятно только, что там выправляется первоначальная задержка
После последнего JR исправляешь IMER
на свой мультиколор LD HL,MULTICOLOR: LD (#BEFF),HL
и от im 2 будет работать твоя прога
---------- Post added at 15:22 ---------- Previous post was at 15:21 ----------
Это для упрощения, без таблички
alone, ты лучше скажи - процедура выше - адекватна?
если она в ирисе работает, то адекватна.
alone, я про вторую, в ирисе подозрительно много коду.
newart, вторая - это моя процедура подстройки под 1 такт из ZX-Guide #3, только с отрезанными комментариями.
Ну что за лентяйство, я вырезал из ириса код для удобства понимания.
Одна процерура генерит вывод мультиколора, вторая переносит картинку в мультколор, чтобы можно было скролл сделать.
Хотя можно и оптимальнее сделать, смотря какая задача стоит :)
---------- Post added at 13:38 ---------- Previous post was at 13:27 ----------
Ага, глянул viewer.. видимо мои представления слегка устарели. LD HL,xxxx: LD (xxxx),HL... да? :)
LD (xxxx),HL гибче. Они вразнобой генерируются, в зависимости от графики.
ld (xxxx),hl - 16 тактов. В строку развертки влезает 14 таких команд. А как сделать на них полноэкранный мультиколор? А с push не все так грубо, в стек можно засовывать не только hl, а в строчке остается еще 48 тактов чтобы поменять атрибуты в регистровых парах для следующей строки.
---------- Post added at 19:38 ---------- Previous post was at 19:37 ----------
Виноват, не 48, а 28
Нет, не так. Квадратно-гнездовое мышление тут не действует. Число и расположение меняемых атрибутов зависит от структуры картинки.
Доперло. У картинки есть некоторые ограничения, но они не существенны для восприятия картинки. Редактор, соответственно, делает все дл того, чтобы ограничения сильно не мешали :) Соглашусь, что для вывода статичесокй картинки хоть на весь экран ld (xxxx),hl подходит лучше, чем стек. Вернее, это есть единственное, что подходит :)
А если картинка очень сложная? например я задумал сложную палитру 8х1 нарисовать, тогда никак?)
Теоретически- да. Из 4096 возможных комбинаций пар байт атрибутов (без яркости) в экране может присутствовать 3072. На деле же все гораздо проще. Я как-то пробовал подобный вывод экрана с помощью генерилки (а это 3072 пары из 65536 возможных) - выигрыш был даже на сканированных картинках с высокой степенью случайности.