так я об этом и говорю, что там куча прибамбасов:
и плюс сигналный проц на звуке.
---------- Post added at 22:32 ---------- Previous post was at 22:31 ----------
через BMP2SCR это делается в два счёта
Вид для печати
>так я об этом и говорю, что там куча прибамбасов
SuperFX не в SNES, он в картрижде, но мы в принципе друг друга поняли.
>через BMP2SCR это делается в два счёта
Ну если результат устраивает, это хорошо. Единственное я могу посоветовать, если уж не найти художника, то графику искать на NES, там палитра не сильно далеко от спека ушла =)
в продвинутых надо вникать в интерфейс,а то что своё - более понятно работает.(раньше создавал редактор с RLE в машинных кодах, только вот листик с кодами посеял (к тому же коды десятичные))
Я бы сделал или небольшие спрайты, или масштабируемые в 2 или 4 раза спрайты.
Если основная программа на Бейсике, то ИМХО заморачиваться с ldi и push-pop смысла нет - всё равно по сравнению с Бейсиком никто и не заметит разницу.
А вот процедура вывода произвольного спрайта (познакоместное):
Код:; подпрограмма вывода спрайта
; входные параметры: HL=адрес спрайта, DE=координаты знакоместа для вывода на экране (D-вертик., E-гориз.)
PUTSPR LD A,(HL)
AND A
RET Z ; выход, если пустой спрайт
LD B,A
PUTS1 PUSH BC ; B = количество знакомест в спрайте
INC HL
LD A,(HL)
ADD A,D
LD B,A
INC HL
LD A,(HL)
ADD A,E
LD C,A
INC HL
PUSH DE ; DE = координаты спрайта на экране
EX DE,HL ; DE = адрес нахождения в спрайте, HL = свободно
PUSH BC ; BC = реальные координаты спрайта на экране
LD A,B ; расчет адреса атрибутов знакоместа в HL
RRCA
RRCA
RRCA
LD L,A
AND 31
OR 88
LD H,A
LD A,L
AND 252
OR C
LD L,A
POP BC ; BC = реальные координаты спрайта на экране
LD A,(DE) ; читаем байт атрибутов знакоместа в спрайте
LD (HL),A ; заносим атрибуты знакоместа на экран
INC DE
LD A,B ; расчет адреса первого байта знакоместа в HL
LD H,A
RRCA
RRCA
RRCA
AND A,224
ADD A,C
LD L,A
LD A,H
AND 24
OR 64
LD H,A ; HL = адрес вывода знакоместа на экране, DE = адрес изображения в спрайте
; вывод знакоместа (8 строк)
LD A,(DE)
LD (HL),A ; вывели байт спрайта
INC DE
INC H
LD A,(DE)
LD (HL),A ; вывели байт спрайта
INC DE
INC H
LD A,(DE)
LD (HL),A ; вывели байт спрайта
INC DE
INC H
LD A,(DE)
LD (HL),A ; вывели байт спрайта
INC DE
INC H
LD A,(DE)
LD (HL),A ; вывели байт спрайта
INC DE
INC H
LD A,(DE)
LD (HL),A ; вывели байт спрайта
INC DE
INC H
LD A,(DE)
LD (HL),A ; вывели байт спрайта
INC DE
INC H
LD A,(DE)
LD (HL),A ; вывели байт спрайта
EX DE,HL ; HL = адрес нахождения в спрайте
POP DE ; HL = адрес нахождения в спрайте, DE = координаты спрайта на экране
POP BC ; B = цикл по количеству знакомест в спрайте
DJNZ PUTS1
RET
SPRITE1 ; метка-адрес спрайта
DEFB 24 ; количество знакомест
DEFB 1,5,1, 0,7,125,0,15,12,8,8 ; знакоместо 1: вертик.координата, гориз.координата, байт атрибутов, 8 байт изображения
DEFB 1,6,1, 0,0,0,0,255,255,13,0 ; знакоместо 2
... ; остальные 22 знакоместа
с зумом мне идея нравится, сделать бы как в Repton'e всё большое и квадратное.
Очень интересно - проблему решил? Если решил, интересно - как?
Вообще-то поможет.
В beta Basic'е есть такая процедура.
Вот набросок моей весьма невзрачной игры (внизу ещё шипов добавлю):