Deja Vu #09
13 ноября 1999

Доска почета - Ща скажу №1: оптимизация процедур, анонс журнала и новой аркадной игрушки.

(C) Max/CBX/BDA,  10.09.99.
__________________________________________





   Все таки  херово в  Сибири,  причем  не
только зимой, но и осенью...   Погодка вы-
далась  самая что  ни на есть мерзостная -
холодный ветер с дождичком.  На градуснике
что-то около +7 - +8.   И это еще ничего -
в прошлом году вообще 20 сентября снег вы-
пал...
   С полчаса назад я приперся домой с уче-
бы, не миновав  холодного  дождичка.  Сижу
вот, статью набиваю.
   Да и не о кодинге эта статья  - так, по
мелочам...


                  *  *  *



   Почитал я в августе спековскую прессу и
решил кой-чего дополнить:


1) DEJA VU #08:


   Я писал о глюке в плэйере от PT3.  Глюк
заключался  в подвисании  проигрывателя во
время обработки команды Vibrate в канале B
(в редакторе  ничего подобного не наблюда-
лось).
   Где-то через месяц после выхода журнала
ко мне в руки попал BestView 2.8, в help'е
к которому Иван Рощин поведал о методе ус-
транения этого глюка: в player'е по смеще-
нию #0A34 необходимо  байт #1A заменить на
#38.
   Я считаю, что данный метод некорректен,
т.к.  при этом команда Vibrate  ВООБЩЕ  не
будет использоваться в канале B. Чтобы она
все таки работала,  необходимо заменить на
#1D !
   Но и это еще не все ! В плэйере команда
Vibrate  неверно работает во всех каналах,
независимо от способа fix'а !  Оказывается
(и в этом легко убедиться на слух),  что в
проигрывателе (или компиляторе ?)  перепу-
таны местами параметры этой команды.
   Можете  провести следующий эксперимент.
В редакторе сделайте какой-нибудь "долго-
играющий" сэмпл и поставьте в одном из ка-
налов ноту с этим сэмплом.   Затем на ноте
поставьте  команду  Vibrate  (COM 60A1)  и
проиграйте паттерн.  Вы услышите прерывис-
тый звук: #0A фреймов звук есть, 1 фрейм -
звука нет.  Теперь  компильните  все это и
прослушайте вне редактора:  1  фрейм  звук
есть, #0A фреймов - звука нет !
   Для  fix'a  необходимы  такие изменения
(плэйер откомпилен под адрес #C000):


╔═══════╤════════════════╤═══════════════╗
Адрес      Есть      Должно быть 
╟───────┼────────────────┼───────────────║
#C86B LD A,(DE)      LD A,(DE)   
║       │ LD (#CBA3),A   LD (#CB9B),A
║       │ INC DE         INC DE      
║       │ LD A,(DE)      LD A,(DE)   
║       │ INC DE         INC DE      
║       │ LD (#CB9B),A   LD (#CBA3),A
║       │ LD A,#8C       LD A,#8C    
║       │ LD (#CB8A),A   LD (#CB8A),A
║       │ RET            RET         
╟───────┼────────────────┼───────────────╢
#CA29 LD A,(DE)      LD A,(DE)   
║       │ LD (#CC26),A   LD (#CC1E),A
║       │ INC DE         INC DE      
║       │ LD A,(DE)      LD A,(DE)   
║       │ INC DE         INC DE      
║       │ LD (#CC1E),A   LD (#CC26),A
║       │ LD A,#1A; (#38)│  LD A,#1D    
║       │ LD (#CC1B),A   │  LD (#CC1B),A
║       │ RET            │  RET         
╟───────┼────────────────┼───────────────╢
#CD35 LD A,(DE)      │  LD A,(DE)   
║       │ LD (#C6B3),A   │  INC DE      
║       │ INC DE         │  LD (#C6B8),A
║       │ LD A,(DE)      │  LD (#C6A0),A
║       │ INC DE         │  LD A,(DE)   
║       │ LD (#C6B8),A   │  INC DE      
║       │ LD (#C6A0),A   │  LD (#C6B3),A
║       │ XOR A          │  XOR A       
║       │ LD (#C667),A   │  LD (#C667),A
║       │ LD L,A         │  LD L,A      
║       │ LD H,A         │  LD H,A      
║       │ LD (#C660),HL  │  LD (#C660),HL║
║       │ RET            │  RET         
╚═══════╧════════════════╧═══════════════╝


   После всего этого,  компилированный RE-
SISTANCE звучит так же, как и в редакторе.
   Да, еще одна вещь:  почему-то инициали-
затор не возвращает флажки команд в исход-
ное состояние.  Т.е.,  допустим,  играет у
вас сэмпл с командой Vibrate,  а вы в этот
момент  прекращаете  проигрывание  музона,
инициализируете его  (CALL #C000)  и начи-
наете проигрывать снова.  Так вот, в неко-
торых случаях,  первые  ноты мелодии могут
быть проиграны с  "невыключенной" командой
Vibrate !




2) ADVENTURER #09:


   Иван Рощин похвастался своей процедурой
перевода  кода символа ("0...9", "A...F" и
"a...f") в соответствующее HEX-число #00 -
#0F.   Занимала эта процедурка 10 байт, но
меньше, по видимому, сделать еще можно:

    Было:                      Стало:


   RES 5,A                    AND #1F
   BIT 6,A                    SUB #10
   JR NZ,$+4                  JR NC,$+4
   ADD A,#27                  ADD A,#19
   SUB #37


   (10 байт)                  (8 байт)





3) BORN DEAD #0B:


   Приведенную там  как  бы  процедуру как
бы очистки экрана можно ЕЩЕ немного подсо-
кратить (как бы на байт):

 Было написано:           Следует читать:


   XOR A                    XOR A
   LD HL,#5B00              LD HL,#5B2B
   DEC HL                   LD (HL),A
   LD (HL),A                OR (HL)
   OR (HL)                  JR NZ,$-4
   JR NZ,$-3


   Только теперь она еще как бы очищает и
часть буфера принтера...



                  *  *  *




В заключение - небольшой анонс:

1) В RUSH #1 была статейка о том как звуки
   делать (носом :).  Так получилось,  что
   за неделю  до  прочтения сей статьи мне
   приспичило самому заняться данной проб-
   лемой.  Из статьи я понял, что есть лю-
   ди которых это интересует, посему решил
   поделиться   результатами   собственных
   изысканий.
     Результаты  представляют  собой прос-
   тенький редактор сэмплов.  Редактор до-
   вольно несложный, работа с диском вооб-
   ще будет на БАСИКЕ. Тем не менее, сэмп-
   лы  можно  делать  приличные.  В общем,
   ждите следующего номера,  а пока только
   скриншот:



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

Апперативчик - вступление от авторов.

Апперативчик - Об управлении в Deja Vu.

Апперативчик - Халява №2: о пиратах и взломанных версиях журнала.

Апперативчик - Dejavu Info: Как приобрести журнал Deja Vu.

Тема - Swap: "От письма до бандероли" как найти в своем городе Спектрумистов.

Тема - Тусовка: CSP'99 - интервью со Slack Den.

Тема - Тусовка: CSP'99 - интервью с main coder'ом молодой Новосибирской группы AREASoft

Тема - Тусовка: CSP'99 - интервью с одним из издателей электронного журнала Deja Vu' Daniel/Playgear Co./Binary Dimension.

Тема - Тусовка: CSP'99 - интервью с одним из участников Рыбинской группы Cav/Auryn.

Тема - Тусовка: CSP'99 - интервью с отцом группы Playgear классным дядькой Ze Pagan.

Тема - Тусовка: CSP'99 - интервью с main coder'ом Flash и по совместительству одним из основателей группы - Alex Rider.

Тема - Тусовка: CSP'99 - опрос, как прошла party в двух словах, общие впечатления.

Тема - Тусовка: Сказание о том, как проходило Crazy Siberian Party 1999.

Капля припоя - HD диски: Доработка контроллера дисковода для работы с HD-дисками.

Капля припоя - Решение пpоблемы 1.2Мб дисковода.

Капля припоя - увеличение объема ОЗУ до 1024к на SPECCY варианта Таганрог 128К!

Капля припоя - схема программатора для микросхем постоянных запоминающих устройств (ПЗУ).

Капля припоя - о матричных принтерах.

Капля припоя - ISA-Spectrum: плата вставляемая в ISA слот IBM, являющееся частью или полным компьютером ZX-Spectrum.

Software - Демосцена: Обзор'инг демозов: 63 bit III, Jam, Anamnesis, 7 Up, 63 bit IV, DemoDyin, Napalm, Crapmo 2, Bunch of Arce, Devotion, WorkStop, Energy, Yes.

Software - Обзор Игр: MIST: Monstrland Part Two, Bomb Lakes, Marbles, KluXer, 4x4 Puzzle, Солдатики, Кораблики.

Software - Gun Commander: руководство пользователя.

Coding - coding для чайников: цивилизованный выход в TR-DOS.

Coding - coding для чайников: Подробно об одном из способов опроса клавиатуры.

Coding - coding для чайников: как устроен "Boot" изнутри.

Coding - coding для чайников: доработка MINI BOOT V3.0.

Coding - процедура печати 42 символа в строке (с трабутами), процедура быстрой печать спрайта с точностью до пикселя.

Coding - быстрай печать 64 символов в строке.

Coding - Конверсия числа со стека калькулятора в символьную строку.

Coding - быстрая печать спрайта 2х2 знакоместа, с точностью до знакоместа.

Coding - Hrust Library свободноpаспpостpаняемая библиотека пpоцедуp, с помощью котоpых можно упаковывать и pаспаковывать pазличные данные.

Coding - Обработка ошибок TR-DOS при работе через #3D13.

Coding - набор процедур для построения пользовательского интерфейса.

Coding - пишим вирус невидимку для TR-DOS.

Another world - Иллюзия безопасности: Страшные сказки о безопасности Windows и Internet (часть первая).

Доска почета - 3 метода отличить pеальный ZX Spectrum от эмулятоpов.

Доска почета - устав национального Фонда Спектрума (HФСП).

Доска почета - Резервы: попытка представить совершенный ZX Spectrum.

Доска почета - Накипело: "А жив ли еще Speccy, курилка?" Размышления в слух.

Доска почета - Ща скажу №1: оптимизация процедур, анонс журнала и новой аркадной игрушки.

Доска почета - Ща скажу №1: разборки Serg'a и Playgear, Взлом телефонных карт, анонс Crazy Siberian Party '2000.

Доска почета - Краткая история кемеровской группы Digital Life Group.

Семь и 1/2 - Студенческая мифология.

Семь и 1/2 - День дурака 2 (окончание).

Семь и 1/2 - Сказочки для детей.

Семь и 1/2 - Особенности национального рулеза или чисто Сибирский проект (повесть о Crazy Siberian Party 1999).

Пробы пера - воспоминания: новелла по игре "Черный Ворон".

Пробы пера - рассказ "Элексир Зверя".

Пробы пера - "Last Warrior".

Реклама - текстовая реклама и обьявления.

Реклама - графическая реклама и обьявления.


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

Похожие статьи:
Программирование - Драйвер памяти.
Письма - Модем: письмо Бориса Сокола - первый шаги в FIDO.
Исповедь - Rombik: Как я начал курить.

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