ZXNet эхоконференция «code.zx»


тема: Курсор в программах, проблемы



от: 500:812/07.05
кому: All
дата: 19 Feb 1998


Приветствую тебя, о достопочтимый All!


Так вот, что я хотел бы сказать ..

Тем, кто считает, что мол интерфейс с
курсором грохает много Memory:

Я как-то занимался этим ...
У меня полноценный интерфейс (легко при-
способить где угодно) занимает 3+1+1 сек.
3 загружаются, всего 5.
1 - Табличка для IM2
еще 1 -данные, печатая какой - нибудь
option выполнить CALL G_COORD (форм. данных)

data:
DEFW Координаты обычно H-вер. L-гор.
DEFW Адрес, где отмечать
DEFW Размер отмечаемой области, опять-же H-вер. L-гор.
Кстати 7 битом L можно отметить (ATTR/SCREEN)
ATTR через xor, SCREEN через cpl

Можно вполне и без последнего дефа обойтись.

Как отмечать - и так ясно.

Вы знаете как плавно двигать спрайты??
-если нет, смотрите через DISASSM игрухи
и мотайте на ус.

Один из способов:

pbuf LD (XSP1+1),SP
LD SP,IX ; таблица адресов (старая)
LD BC,#XXFF; LDI не должно быть много
pb1 POP DE
LDI
LDI ;Печатаем буфер
LDI
LDI
DJNZ pb1 ;4 LDI Для примера
xsp1 LD SP,0
RET

//////////////////////////////////
Отметка опции, если были изменения
//////////////////////////////////

psp LD (XSP2+1),SP; В DE адрес буфера
LD SP,IY ; Hовая таблица должна
LD BC,#XXFF; быть просчитана,
pr1 POP HL ; когда мы стали
LDI ; причиной этого.
LDI
LDI ; Читаем буфер
LDI
DJNZ pr1
EXX
LD SP,HL ; Здесь спрайт
LD BC,#XX1F;
pr2 LD E,(IY+0)
LD D,(IY+1)
LD A,(DE)
POP HL ; Он должен быть запи-
AND L ; сан таким образом.
OR H
LD (DE),A ;1
LD A,E
CPL
AND C
JR Z,gr1
INC E
LD A,(DE)
POP HL
AND L
OR H
LD (DE),A ;2
LD A,E
CPL
AND C
JR Z,gr1+1 ; Печатаем спрайт
INC E
LD A,(DE)
POP HL
AND L
OR H
LD (DE),A ;3
LD A,E
CPL
AND C
JR Z,gr2+2
INC E
LD A,(DE) ;4
POP HL
AND L
OR H
LD (DE),A
gr0 INC IY
INC IY
DJNZ pr2
LD HL,table_n;Hовая таблица
LD DE,table_o;Устарела.
LD BC,#XX*2
LDIR ; Можно быстрее
xsp2 LD SP,0
RET
gr1 POP HL
POP HL
POP HL
JP gr0

Можно отказатся от таблиц (CALL next_l)
Усе будет медленнее...

Еще одно: если у вас кроме стрелки, есть
и другие движущиеся обьекты, лучше распре-
делите их в уже сдвинутом виде.
Одну стрелку распылять нет смысла.

Запуск:
-Подготовить IM2
-расположить спрайт(ы) так, как надо
-состыковать адрес с координатами
-выполнить CALL 'расчет таблицы'
-Просмотреть опции
-выполнить CALL psp (печать) и EI:HALT

Порядок работы:
1. Опрос клавы.
2. не разгоняемся? тогда HALT:DI
3. Контроль разгона,Ротация стрелки
4. Определение новых координат и адреса
5. Просмотр опций (data),Просчет таблицы (новой разумеется)
6. Все должно быть готово; мы успели ?
7. EI:HALT ;печать в прерывании
8. Переход на 1.

Отойдем от этого ...


От некоторых прог просто клонит ко сну.

Люди! Все давно проверено и работает.
Зачем дело стало ?

Hадеюсь - All, тебе пригодится хоть
что-то из того, что я здесь накрапал.

С наилучшими пожеланиями PHOENIX at 20.02.1998

-+- ZXASM 3.0




Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Форум - МНОГОЗАДАЧНОСТЬ И ОС.
Обзорчик SYS - Обзор системных программ: Alasm v3.8c, Tasm v4.12, XAS v9.06+, ZX-ASM v3.0.
Игрушки - Top 10 игр, Pokes.
Статься 2 - привязанность к спектруму, это волшебство или маразм?
Новости - В городе новостей особых нет.

В этот день...   25 апреля