Speccy #04
29 февраля 1996
  Звук  

Программирование - Как подключить музыкальное сопровождение при выводе мультфильма.

<b>Программирование</b> - Как подключить музыкальное сопровождение при выводе мультфильма.
╒══════════════════════════════╕
│░░░░░░ ПРОГРАММИРОВАНИЕ ░░░░░░│
╘══════════════════════════════╛

 Очень многие  пользователи  ZX-
-Spectrum, которые освоили пакет
программ  "Animation"  постоянно
задают один и тот же вопрос.
 Как подключить музыкальное соп-
ровождение при выводе мультика?

 Для тех кто имеет  компьютер  с
ОЗУ  48кб.  подключение  мелодии
связано с большими  трудностями.
Если мультролик займет все  сво-
бодное место  ОЗУ,  то  вставить
музыкальное сопровождение  будет
невозможно.

 В этом отношении очень  хорошие
возможности  имеют  пользователи
компьютеров с ОЗУ 128кб.и более.
Музыкальное сопровождение на та-
ких компьютерах можно сделать  к
любому изготовленному вами муль-
тику, кроме того вы можете  заг-
рузить в память компьютера сразу
несколько блоков.

 Далее  будет   рассмотрено  как
практически  осушествить   вывод
ролика с музыкальным сопровожде-
нием.

Величутин Н.В.
──────────────

 Программа, приведенная ниже,по-
может всем,кто хочет чтобы вывод
мультролика сопровождался проиг-
рыванием музыки.

 Ограничения:
1. Наличие не менее  128 кб. ОЗУ
2. Наличие музыкального  процес-
   сора.

 В программе, которую мы  сейчас
рассмотрим, мелодия  загружается
в 4-ю страницу памяти, но  поль-
зователи, естественно, могут ис-
пользовать любую другую страницу

 Адрес инициализации  мелодии  и
адрес проигрывания приведены для
музыкального редактора ASM 1.12.
Для редакторов  Sound Tracker  и
Pro Tracker адреса следует заме-
нить  соответственно  на 49152 и
49158. Вы  можете  заменить  эти
адреса и в готовом  откомпилиро-
ванном блоке поместив адрес ини-
циализации  мелодии   по  адресу
25002, а адрес проигрывания  ме-
лодии по адресу 25004.  Например
из  Basic'a  это  можно  сделать
набрав в  строке   POKE 25002,0:
POKE 25003,192:POKE 25004,6:POKE
25005,192.

 Адрес старта программы 25000.


START  EQU  33150  ;адрес старта
                   ; мультролика
BUF    EQU  25344  ;адрес буфера
                   ;перехода  по
                   ;вектору пре-
                   ;рываний
BANK   EQU  23388  ;сист.  пере-
                   ;менная,номер
                   ;страницы ОЗУ

       ORG  25000

       JR   BEGIN

MISIN  DEFW 49163  ;адрес  иниц.
                   ;мелодии
MUSIC  DEFW 49166  ;адрес проиг-
                   ;рывания мел.

BEGIN  LD HL,(MUSIN)
       LD (MUS1+1),HL
       LD (MUS2+1),HL
       LD HL,(MUSIC)
       LD (MUS3+1),HL

       LD   A,20     ;подключаем
       LD   (BANK),A ;4 стр. ОЗУ
       LD   BC,#7FFD ; заносим в
       OUT  (C),A    ; в порт
MUS1   CALL 49163    ; инициали-
                     ; зация ме-
                     ; лодии
       LD   BC,#7FFD ;подключаем
       LD   A,16     ;0 стр. ОЗУ
       LD   (BANK),A
       OUT  (C),A
       CALL IM2ON    ;  включаем
                     ;прерывания
                     ;2-го  рода
       CALL START    ;    запуск
                    ;мультролика
       CALL IM2OFF   ;  включаем
                     ;прерывания
                     ;1-го  рода
       LD   BC,#7FFD
       LD   A,20
       LD   (BANK),A
       OUT  (C),A
MUS2   CALL 49163
       LD   BC,#7FFD
       LD   A,16
       LD   (BANK),A
       OUT  (C),A
       RET

;ПОДПРОГРАММА  ОБРАБОТКИ  ПРЕРЫ-
;ВАНИЙ 2-го РОДА.

;Работу данной подпрограммы мож-
;но разделить на 5 частей:
; 1.Сохранение на стеке значений
;   всех регистров процессора
; 2.Переключение страницы ОЗУ
; 3.Проигрывание мелодии
; 4.Переключение страницы ОЗУ
; 5.Восстановление всех значений
;   регистров процессора

OBRIM2 DI
       PUSH HL
       PUSH DE
       PUSH BC
       PUSH IX
       PUSH IY
       EXX
       PUSH HL
       PUSH DE
       PUSH BC
       PUSH AF
       EX   AF,AF'
       PUSH AF
       LD   BC,#7FFD ; переклю-
       LD   A,20     ;чение стр.
       OUT  (C),A    ;   ОЗУ
       PUSH BC
MUS3   CALL 49166    ;проигрыва-
                     ;ние мелод.
       POP  BC       ; переклю-
       LD   A,16     ;чение стр.
       OUT  (C),A    ;   ОЗУ
       POP  AF
       EX   AF,AF'
       POP  AF
       POP  BC
       POP  DE
       POP  HL
       EXX
       POP  IY
       POP  IX
       POP  BC
       POP  DE
       POP  HL
       EI
       JP   #0038    ;переход на
                     ;опрос кла-
                     ;виатуры  и
                     ;возврат  в
                     ;  основную
                     ; программу

;ПОДПРОГРАММА ВКЛЮЧЕНИЯ ПРЕРЫВА-
;НИЙ ВТОРОГО РОДА.

;В данной программе вначале под-
;готавливается буфер для перехо-
;да по вектору прерываний.
;Подготовка такого буфера  необ-
;ходима для компьютеров у  кото-
;рых нестабильна шина данных.
;Устанавливается вектор прерыва-
;ний на адрес этого буфера.
;Так как переход будет  осущест-
;вляться по адресу #FFFF  то  по
;этому адресу заносится байт #18
;(JR), а  относительный  переход
;#F3 берется из ПЗУ.В адрес это-
;го перехода заносится байт  #C3
;(JP) и далее адрес подпрограммы
;обработки прерываний.

IM2ON  DI        ;запрет прерыв.
       LD HL,BUF   ;в буфер за-
       LD DE,BUF+1 ;носим числа
       LD BC,#0100 ;#FF - адрес
       LD (HL),#FF ;перехода по
       LDIR        ;вект.прерыв.
       LD A,#18     ;код JR
       LD (#FFFF),A ;в адрес
       LD A,#C3     ;код JP
       LD (#FFF4),A ;в адрес
       LD HL,OBRIM2 ;переход на
       LD (#FFF5),HL;подпрограм.
                    ;обр.прерыв.
       LD A,#63     ;устанавлив.
       LD I,A       ;вектор
                    ;прерываний
       IM 2         ;включаем
                    ;прерывания
                    ;2-го рода
       EI
       RET

;ПОДПРОГРАММА ВКЛЮЧЕНИЯ ПРЕРЫВА-
;НИЙ ПЕРВОГО РОДА.

IM2OFF DI
       LD    A,#3F ;устанавли-
       LD    I,A   ;ваем вектор
                   ;прерываний
       IМ 1        ;включаем
                   ;прерывания
                   ;1-го рода
       EI
       RET
 На следуюшей  странице  помещен
кодовый блок программы. Для  его
использования необходимо  скопи-
ровать экран, подготовить и  от-
компилировать музыку  по  адресу
49152, и естественно сделать сам
мультролик.



 Надеюсь, что рассмотренная выше
программа,позволит делать мульт-
ролики болле привлекательными.

            * * *



Другие статьи номера:

Авторская программа - Описание авторской игры "Move'em All".

Авторская программа - Описание системной программы "Uinversal Sprite Cracker v1.01".

Игроскоп - Описание первого уровня аркадно-адвентюрной игры "48 Утюгов", карта к игре "Dan Dare 3".

Игроскоп - Разбор игры "The Hunt For Red October".

Музобоз - Итоги первого конкурса на лучшую демонстрацию.

Новелла - "НЛО враг неизвестен или охотничьи угодия на окраине галактики".

От редакции - O распространении журнала.

Программирование - Как подключить музыкальное сопровождение при выводе мультфильма.

Реклама - Реклама из Челябинской области.

Тусовка - Письмо от Дмитрия Бурлака из г.Минска.

ЧЕЛГУ - Челябинский государственный университет об'являет прием на физический факультет по специальности 070300 "Баллистика"


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

Похожие статьи:
Рассказ - Игра.
Реклама - Реклама и объявления.
Проходилки - Секреты прохождению игр: Чёрный Ворон
Презент - о приложении к газете: релизы от Korund'a и Gus'a.
Обзор - новые игры Elite III, 1-St Devision Manager и анонс игры "Звездное наследие".

В этот день...   21 ноября