>так я об этом и говорю, что там куча прибамбасов
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'е есть такая процедура.
Вот набросок моей весьма невзрачной игры (внизу ещё шипов добавлю):
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)