KrNews #10
20 августа 1999

CODING - Почему он так режет? (о выводе картинок на экран).

<b>CODING</b> - Почему он так режет? (о выводе картинок на экран).
_

          НУ ПОЧЕМУ ОН ТАК РЕЖЕТ?
     или как бороться с головной болью
_

(C) Cannibal/Paradox'99

                 - 1 -

  Лично  мне непонятно, почему появилось
много высококлассных программ (это боль-
ше относится к системкам), где при выво-
де на весь экран картинок режет луч (QSV
v1.0), хотя бывают и такие варианты, где
ничего не режет, но зато хранится в рас-
пакованном  виде (Intro for Enigma Maga-
zine).
  А  все,видимо,  из-за  лени авторов, а
ведь  начинающий  программист  посмотрит
как это делают профессионалы -подумает:
"раз они так делают, значит так правиль-
но!" и тоже начнет так делать...
  Или такой случай: человек написал кра-
сивый  вывод  картинки,  а  она занимает
слишком много памяти...

  Вот мой метод:

  1. Пакуем  картинку  любимым  экранным
компрессором   (предпочтительнее   LASER
COMPACT'ом).
  2. Загружаем STS. Далее грузим запако-
ванный экран.
  3. Декомпресор  имеет примерно следую-
щий вид:
                LD C,#F9
                CALL 8134
                LD DE,#8C
                ADD HL,DE
                LD DE,#4000
                ...
  Он  может выглядеть по другому (смотря
чем  паковали), но главное здесь -найти
число  16384 (#4000) и увеличить старший
байт  на  128  (в  результате  получится
#C000).
  Теперь ищем команды CP #58 и тоже уве-
личиваем на 128. Только смотрите, не пе-
рескочите  распаковщик и не измените за-
пакованные данные экрана...
  4. Если мы имеем дело не с со всем эк-
раном,а  с его третями,то поступаем ана-
логичным  способом,  только  здесь может
быть не #4000, а другое число.
  5. Сохраняем  измененный  декомпрессор
(разумеется с запакованной картинкой!) и
в  каком-нибудь ассемблере набиваем сле-
дующий бред:

       DEPACK   EQU 25000

                EI
                LD A,23
                LD BC,#7FFD
                OUT (C),A
                CALL DEPACK
                CALL MOVE
                LD A,16
                LD BC,#7FFD
                OUT (C),A
                ....

  Где  DEPACK  - запакованный экран, а в
метку   MOVE  можно  поместить  красивое
проявление экрана или просто перебросить
экран LDIR' ом.

                 - 2 -

  Многие замечали,если запустить с TRDOS
какую-нибудь   игрушку  и  после  старта
лоадера  меняется  цвет  (черный), очень
все режет, сначала меняется бордер,затем
экран (или наоборот), то есть полное от-
сутствие синхронизации -такое я видел в
90% софта (!),  хотя ради справедливости
нужно  заметить, что в современных прог-
раммах все цивильно.
  А  все  очень  просто.  Чтобы все было
плавно и не резало при смене экрана нуж-
но пользоваться командой HALT.

  Пример:
              XOR A         ; LD A,7
              LD HL,#5800
              LD DE,#5801
              LD BC,767
              LD (HL),L     ; LD (HL),63
              HALT
              OUT (#FE),A
              LDIR
              ...
  Warning! Перед запуском прерывания до-
лжны быть разрешены!

  Рад,  если  эта информация кому-нибудь
окажется полезной.

 Cannibal ...                22.06.99  █




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

INTRO - Полиграфическое издание газеты KrNews на бумаге.

Анонс - Новая ПЗУ - Technology Rom v1.0.

FERRUM - Подключение AY-шки.

Новелла - 12 ТАЙНЫХ КНИГ (глава 2,3).

BBS NEWS - Новости с PROFI BBS.

Письма - Письмо из Горячего Ключа.

IS-DOS - Улучшение IS-DOS'а.

CODING - Intro в 256 байт?

CODING - Почему он так режет? (о выводе картинок на экран).

Мозаика - Винт по #3D13, коментарии к рецензии о KrNews.

Юмор - Вопрос о кирпиче...

CHA0TIC - CC'99 - воспоминания о Питерском демопати.

Авторы - Об авторах.

Реклама - Реклама и объявления ...


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

Похожие статьи:
Информация - описание DCU 2.xx
Beatles - песня ONLY YOU.
Мнение - Sir Denis продолжает дискуссию о демах и демосцене.
Кодер - Кодер оборудован компом. Комп у кодера казенный. Он кодит.
Report - Report - отчет NoViS с Казанского фестиваля компьютерного искусства CAFe'2oo2.

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