К основному контенту

Сообщения

   Проигрываем SoundFX на NEOGS в играх. Имеем 8 каналов. Семплы используем 8 bit, wav, сохраняем как PCM. Процедура сама выбирает свободный канал и играет семпл. Каждое обращение к загрузке семпла определяет его номер от 1....255. При проигрывании просто указываем этот номер семпла.  Не забываем сбросить карту.               LD A,#F4; resset               CALL SC               CALL WC             LD IX,PARAMETR             LD HL,ADDR_SAMPLE             LD DE,LENGHT_SAMPLE             CALL SAMPLE_LOAD             RET SAMPLE_LOAD:           LD A,#38           CALL SENDCOM           LD A,#D1;  Открыли поток           CALL SENDCOM           LD A,(HL) LOOPG:          IN B,(C)          JP P,READY          IN B,(C)          JP M,LOOP READY:          OUT (GSDAT),A          INC HL          LD A,(HL)          INC E          JP NZ,LOOP          DEC D          JP NZ,LOOP WAIT:          IN B,(C)          JP M,WAIT          LD A,#D2;  Конец стрима          CALL SENDCOM          LD A,(IX)          O
Недавние сообщения

Full Kempston joy for Evo

  Однокнопочный джойстик для ZXSPECTRUM морально устарел, очень советую всем любителям ZXEvo, установить версию прошивки с поддержкой full kempston joy. В этом случае вы получите джойстик сеговского формата: крестовина, кнопка start + кнопки ABC. На данный момент испробовать его можно в такой игре как: Delta Shadow или в демке Street Fighter . Также мы будем его поддерживать в будущих играх.  Скачать три прошивки в архиве:  pmc-wagner.su/fw_kempston.rar 1.zxevo_fw.bin  файл для base conf 2.zxevo_fw_vdac.bin  для ts conf 3.zxevo_fw_vdac2.bin для tsconf с поддержкой VDAC2 Программируем джойстик:  Пример:       in a,(1f)                          bit 1,a                          jp nz,left Значение битов:    bit 0 = right, bit 1=left, bit2=down, bit 3=up                                       bit 4=fire3, bit 5 = fire2, bit 6=fire1, bit 7=start 

Работа с часами

Работа с часами.  Мы часто сталкиваемся с ситуацией когда нужно вывести таймер. Я не буду расписывать порты, благо это сделано до меня, дам лишь простой пример, как в регистр "A" получить, часы, минуты, секунды. В нашем случае нет разницы, программируете вы на Base conf или Ts conf. TIME         LD A,#80                    LD BC,#EFF7                    OUT (C),A                    LD A,0;   если 0 - получаем секунды, если 2 - получаем минуты, если 4 - получаем часы.                    CALL READCMOS                    RET REACMOS                    LD BC,#DFF7                    OUT (C),A                    LD B,#BF                    IN A,(C)                    RET ;   Вызвали процедуру TIME, на выходе в регистр А время. В данном примере получим секунды, но можно получить и минуты и часы, меняйте регистра А на входе, где стоит коментарий. Время выдается в формате BCD, потому переводим его в удобоваримую форму:                    LD A,C                    AND #F0             

Печать спрайта в TS CONF 256 color

  TS-CONF по умолчанию имеет аппаратные спрайты и тайлы которые используют 16 цветов, однако это не значит, что нет возможности использовать спрайты в 256 цветов. Для того, чтобы вывести такой спрайт, нужно воспользоватся DMA в режиме BLT1. В этом режиме перекидываются любые данные если они не равны нулю. Рисуем спрайты любыми цветами, но нулевой цвет оставляем для фона который нужно будет вырезать. Как всегда процедура и спрайты для теста тут: SPR.TRD Ниже привожу пример процедуры:             ORG       30000              LD            HL,0; X COORDINATE            LD            BC,0; Y COORDINATE             LD            (XX),BC LD            D,#C0; ADDRESS SPRITE IN MEMORY LD            E,#10; START VIDEO PAGE CALL       PERECHET; GET NUMBER PAGE PUSH     DE POP        HL LD            DE,16 SBC         HL,DE LD            DE,(XX) ADD        HL,DE PUSH     HL POP       DE LD           (PAGETO),A LD            B,6; SPRITE SIZE X ABSCISSA LD            C,15; SPRIT

Battle City под TS-CONF

В общем мой эксперимент по созданию игры на железе, да на старом софте закончился и весьма удачно. Игра Battle City доделана, и почти без глюков. Спасибо огромное людям которые мне помогали, а именно: TS-Conf   (информационная поддержка) Nik-o   (музыка и звуки к игре) Black Cat (тестил игру) Sergei Smirnov (тоже немного потестил + информ. поддержка) Игру вы можете скачать тут:  http://pmc-wagner.su Сразу скажу, что сделал две версии, с разной палитрой. Первая версия - это игра с оригинальной палитрой Dandy (Famicom), но с ней могут быть проблемы на некоторых мониторах в силу технических особенностей машины. Вторая версия для тех у кого голая Eva без Vdac. Цвета урезаны, да палитра некрасивая, зато монитор не рябит.  Видео отчет по игре:    Технические детали:  Игра вышла под: TS-Config.  Разрешение: 320х240 при 16 цветах на точку.  Количество миссий: 32  Игроков: 2   Особенности игры: Тайлы: кирпичи, лес, бетон, вода, песок (последний тормозит танки). В игре есть два босса. Бонусы:

Печать текста на ZX EVOLUTION

Печать текста на ZX - EVO при помощи DMA . Процедуру качать тут . Запускаем в XAS на железе и тестируем. Процедура использует 16 цветов при разрешении 320х240 Вызывается процедура так:              ld hl , mytext ; собственно тут наш текст                      ld ( textw ), hl ; сохраняем адрес текста в буфер                      ld d ,# c 0; адрес нашего шрифта                       ld e ,#10; адрес начала видеопамяти. Я использую #10                      ld bc ,00; координата X                       ld hl ,00; координата Y                       call text ;   вызываем процедуру mytext            dm “наш текст пишем сюда”                       db 255;    если встречаем байт 255 то выходим из процедуру. Конец текста. ; если встречаем символ 254 то процедура автоматические делает переход на следующую строку ;          пример mytext                       dm “строка 1”                                      db 254; перенос   строки                    

ZX EVO: Вывод тайлов

    Печатать тайлы просто. Готовая программа с комментариями в XAS'm как всегда лежит тут.     CREAT             LD BC,PAGE3; переключаем страницу памяти                         LD A,#08                         OUT (C),A                           LD HL,49152; в адрес 49152 закидываем тестовый тайл                         LD A,2                         LD (HL),A                          INC HL; в памяти содержиться сразу 2 слоя тайлов                         INC HL; потому я делаю 2 раза inc hl                         LD A,3                         LD (HL),A; закидываем еще тайл с номером 3     TILES                  LD BC,T0PAGE;   указываем страницу со спрайтами                            LD A,#C0                            OUT (C),A                           LD BC,TMPAG;    указываем страницу с картой тайлов                         LD A,#08                         OUT (C),A                              LD BC,PALSEL;   устонавл