Inferno #10
30 апреля 2007

Inferno - Ошибки в предыдущих номерах.

             Info Guide #8:

   В схеме "цвет на точку" в цепи 7,внизу,
пропущен резистор.
   Вот как должно быть:
 

  eff7bit0 ───>├──┐
 c30 in (8/D15)─>├─┼─> c30 out (1/D14 only) 
                    ┴ GND 

   Ошибку  нашёл ZET-9, за что ему большое
спасибо.

              Info Guide #7:

   Ошибка  в описании способа урезания де─
 рева до 15 ярусов. Было написано:
   "Ищем самую длинную длину,которая вооб─
ще есть. Допустим,что такой длине (назовём 
её N+1 ) соответствует C символов. Это не─ 
хорошо; эти  символы надо опустить на уро─ 
вень  (ярус) ниже (на N-й ) за счёт подня─ 
тия символов длиной N-1 (поднимаем тоже на 
N-й уровень).На каждые 2 опущенных символа 
длиной  N+1  (а их число C,  козе понятно, 
чётно) приходится 1 поднятый символ длиной 
N-1. Это было бы прекрасно,если бы символы 
длиной N-1 всегда можно было найти. Однако 
их  иногда  не  хватает (может и вообще не 
быть), поэтому приходится довольствоваться 
поднятием  символов  длиной N-2 (поднимаем 
на N-1-й уровень):на каждый такой поднятый 
символ приходится 4 опущенных символа дли─ 
ны N+1.  Если нет N-2, берём N-3 - на каж─ 
дый  такой поднятый приходится 8 опущенных 
N+1. И так далее.В конце концов,после нес─ 
кольких операций по опусканию символов ма─ 
ксимальной длины, длин >15 не остаётся." 
   Однако  иногда  они  всё-таки остаются.
Чтобы избежать этого,следует делать не как
написано в IG#7, а вот так:
  1. Находим N+1 = самый глубокий ярус,
имеющийся в дереве. 
  2. Находим первый непустой ярус X є N-1.
  3. Убираем в нём 1 литерал, взамен
добавляем 2 литерала на ярусе X+1 (т.е. 
вместо литерала делаем "разветвление" в 
ярусе X ). 
  4. Добавляем 1 литерал на ярусе N, но
убираем 2 литерала на ярусе N+1 (т.е. 
заменяем "разветвление" в ярусе N на 
литерал). 
   Этот процесс следует производить до тех
пор, пока N+1 не станет є 15.
   Исправлено в ZXRar и mRIP.

              Info Guide #7:

   Степень сжатия простого Lazy Evaluation
можно улучшить (несколько замедлив) следу─
ющим образом.
    В IG#7 написано:
   "Суть стратегии в том,что,найдя ссылку,
мы её  не сразу  вносим  в поток, а сперва 
пробуем посмотреть, что получится, если мы 
закодируем  текущий  символ  как символ, а 
ссылку  будем  искать со следующего байта. 
Сравнивая две найденные оптимальные ссылки 
(одна  от  текущего указателя, другая - от 
следующего байта), принимаем решение,какая 
из них выгоднее." 
   Так вот, если оказалось,что вторая ссы─
лка  выгоднее, не следует сразу кодировать
текущий символ  +  эту ссылку. Надо символ
закодировать, а далее  сдвинуть  указатель
текущего  адреса  и СНОВА перейти на поиск
ссылки с адреса+1. И т.д. Так сделано  на─
чиная  с ZXRar v0.30, и это дало  неплохие
результаты.

              Info Guide #7:

   Ускорить сжатие повторяющихся байт мож─
но следующим образом (и это тоже сделано в
новых версиях  ZXRar ): если при поиске от
текущей позиции addr найдена ссылка с дли─
ной Є 8 (число подобрано опытным путём),то
не делаем поиск от позиции addr+1, т.е. не
выполняем Lazy Evaluation. При этом проиг─
рыш  по размеру упакованного файла - всего
0.1%. 
   Я пробовал  ещё один метод (добавляется
в самой  процедуре  поиска), основанный на
проверке смещения на равенство -1. Но пока
не  удалось  его  отладить  (см.  исходник
ZXRar ). 

              Info Guide #6:

   Ошибки  в статье  про ШИМ рассмотрены в
статье "Бипер" (раздел "Музыка" ).

Alone Coder 



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

Ликбез - Аккумуляторы. Практика использования.

Ликбез - Аккумуляторы. Результаты опытов с различными аккумуляторами.

Возможности Спектрума - Описание формата ani-файлов на ZX.

Inferno - Авторы журнала.

Возможности Спектрума - Способы воспроизведения многоканальной музыки на бипере.

Возможности Спектрума - О поддержке формата DVD на ZX.

Gameland - О конкурсе нелепых (или корявых) игр для ZX Spectrum - Crap Games Competition.

Графика - Как быстро рисовать цветные картинки.

Inferno - Вступление от редактора.

Inferno - Ошибки в предыдущих номерах.

For Coderz - Код Грея и оптимизация программ.

For Coderz - Построение графического пользовательского интерфейса.

Форматы - Подробно о декодере jpeg.

Железо - Описание микросхемы К561ПУ4.

Inferno - Письма в редакцию.

Форматы - Формат пакованного файла MegaLZ.

Scorpion ZS - Структура разметки винчестера на компьютере Scorpion.

ZX Клоны - Мультиплатформенность на ZX Spectrum. Компьютеры SAM Coupe и MSX.

Реклама - Реклама NedoPC.

Inferno - Об оболочке.

Активный отдых - Команда "Спектрум" на соревновании по ночному ориентированию Окинчица 2004.

Sofтинка - Сравнительная таблица результатов упаковки кодовых файлов различными упаковщиками.

Реклама - Реклама King of Evil.

Sofтинка - Программы для печати в приложении к журналу.

Sofтинка - Музыкальный редактор Pro Tracker v3.71. История изменений.

Реклама - Реклама от В. Богдановича.

Железо - О некоторых RND-генераторах.

Возможности Спектрума - Аппаратный скроллинг на ZX Spectrum.

Pentagon - Синхроселектор видеосигнала на Pentagon. Проблемы и схема.

DIY - Универсальный TAPE интерфейс. Схема загрузки и записи с ленты.

Звук - Особенности звукового устройства TurboSound FM.

DIY - Схема анализатора состояния TTL вывода.

Будущее Спектрума - Видеоконтроллеры V9990. Расширение графических возможностей ZX Spectrum.

Sofтинка - Обновления в просмотрщиках картинок: ANSI viewer, MCX viewer.

Интервью - Интервью с музыкантом X-Raizor из Omega Hackers Group.


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

Похожие статьи:
To be or not - Вы Эмуляторщик или Реальщик? Неважно, вы Спектрумист!
Двигатель торговли - Приобрету схемы контроллеров AT клавиатуры с прошивками ПЗУ
Phantasy my love - Raver^PHT в своем стиле.

В этот день...   14 декабря