Как написать игру для ZX Spectrum на ассемблере

       

Спрайт из игры FIST



Рисунок 7.1. Спрайт из игры FIST

Рассмотрим пример вывода спрайта произвольной конфигурации (Рисунок 7.1). Не правда ли, многие узнали в нем одного из персонажей игры FIST. Все дело в том, что этот спрайт как нельзя лучше демонстрирует эффективность предложенной нами процедуры PTBL, поскольку его форма заметно отличается от прямоугольной. Управляющая часть программы получилась довольно короткой:

ORG 60000 ENT $ LD A,48 ;INK 0: PAPER 6 LD (23693),A XOR A ;BORDER 0 CALL 8859 CALL 3435 LD A,2 CALL 5633 LD B,10 ;ROW LD C,15 ;COL LD A,SPRPUT ;вывод с уничтожением предыдущего ; изображения LD HL,SPR1 ;чтение адреса спрайта SPR1 CALL PTBL RET

; Заголовок спрайта SPR1 DEFB 22 DEFB 0,3,48, 0,4,48, 1,3,48, 1,4,48, 2,2,48 DEFB 2,3,48, 2,4,48, 2,5,48, 2,6,48, 3,2,48 DEFB 3,3,48, 3,4,48, 4,0,48, 4,1,48, 4,2,48 DEFB 4,3,48, 4,4,48, 5,0,48, 5,1,48, 5,2,48 DEFB 5,3,48, 5,4,48 ; Данные спрайта DEFB 0,0,0,0,3,12,209,46 DEFB 0,0,0,0,192,32,224,240 DEFB 249,34,38,43,43,48,35,248 DEFB 16,112,56,8,16,48,16,240 DEFB 3,6,31,61,61,59,59,27 DEFB 254,255,255,255,255,255,255,255 DEFB 64,224,255,255,255,255,255,255 DEFB 0,0,255,192,224,243,252,240 DEFB 0,248,4,2,2,250,50,28 DEFB 31,7,5,6,7,15,15,31 DEFB 255,255,254,229,3,247,247,235 DEFB 240,0,0,0,252,254,254,254 DEFB 0,0,0,0,0,62,103,77 DEFB 0,0,0,0,0,0,249,255 DEFB 31,31,63,63,127,255,255,255 DEFB 235,219,219,219,252,224,193,131 DEFB 254,254,254,126,254,252,252,248 DEFB 65,67,71,69,34,30,0,0 DEFB 255,255,255,255,63,7,0,0 DEFB 255,254,252,248,240,224,0,0 DEFB 3,3,1,2,2,1,0,0 DEFB 248,248,152,198,1,255,0,0

Есть смысл немного прокомментировать приведенные выше числовые данные, которые полностью соответствуют описанному выше формату. В заголовке перечислены (например, для первой строки):

    22 - общее количество знакомест в спрайте,

    0 - координата Y первого выводимого на экран знакоместа, взятая относительно левого верхнего угла описывающего прямоугольника,

    3 - координата X того же знакоместа,

    48 - суммарные атрибуты знакоместа: PAPER 6, INK 0.

Далее идут тройки чисел, относящиеся к другим знакоместам спрайта и в последовательности, указанной выше: координата Y, координата X, суммарные атрибуты.



Содержание раздела