Adventurer #11
31 июля 2000

Обмен опытом - Про ASCII/асции графику (Посвящается тем, кто не умеет рисовать, ни буквами ни точками...)

     (C) ALF/RD

           Про асции графику.

                 Посвящается тем,
                 кто не умеет рисовать,
                 ни буквами ни точками...

     Здравствуйте.  Сегодня  мне бы хоте-
лось  поделиться  с  вами моими мыслями и
достижениями на тему: "Картинка и текст -
понятия  растяжимые" .  Нет,  речь  сдесь
пойдет  не  о том, как рисовать символами
( об этом написано в e/p Buzz #16-17 ), а
о  том,  как  перевести просто картинку в
формат текста (я не буду отвечать на про-
вакационный  вопрос  "Зачем?"   ,  ведь в
Modern  Word 'e  есть специальная утилита
для перевода картинок в символы. Ответ на
этот  вопрос  смотри ниже). Ну, вздохнете
вы, - "Мы и так все про это знаем" . Уве-
ряю  вас, не все. Я хочу поведать вам три
способа  это  сделать. И мне кажется, все
эти способы уже давно применяются во мно-
гих  местах (там где есть тексты) и прог-
раммах. Прочитайте по крайней мере два-т-
ри абзаца...

     Итак начнем с самого легкого:

     Способ нумбер АДЫН.

     Он  заключается в том, что вы берете
программы  типа  ASCII_2  (мне по крайней
мере  известна  только она) или текстовый
редактор  Modern  Word  2. 1 (может и еще
какой).  И  просто  конвертите картинку в
символы.  Это  самый простой, но не самый
эффективный  способ.  Хотя если вы хотите
именно  буквенный способ отображения гра-
фики,  то  собствено на этом для вас про-
цесс закончен.

     После  того,  как  я первый раз вос-
пользовался  таким  методом,  я почему-то
подумал,  что  мне  не  суждено  выдеть в
своих хелпах ascii иллюстрации. Но после,
я  дошел  еще  до одного, даже двух мето-
дов.
     Собственно  второй  и  третий  метод
связаны  между собой, по крайней мере, на
последнем и, полагаю, на первом этапах.
     Для  людей,  не  разбирающихся в ас-
семблере,  я  посоветую метод три, потому
как  второй требует  минимальное его зна-
ние  (то есть, надо уметь набирать проце-
дуры,  приведенные  мною ниже и их апосля
запускать  и выгружать из отладчика полу-
ченный  результат, во всех примерах с ад-
реса  #6000>24576). Для третьего же необ-
ходим   редактор  Modern  Word  2.  1  by
Demiurgn  Ash  (или  с подобной ему функ-
цией,  а  именно,  конвертором  экрана  в
ascii симво лы с ЗАДАВАЕМОЙ таблицей гра-
даций,  в редакторе M. Word опция зовется
ZX  SCREEN > ASCII by Sairoos , и таблица
градаций  хранится в  файле wordasci.C ),
и  вот еще что оба метода основаны на так
называемом   методе  Chunk 'ов,  то  есть
текстур,  обозначающих различные градации
цвета  (а-а-а,  вот о чем будет весь этот
бред...).

     Метод нумбер ДЫВА.

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

     На   первом  этапе  нам  понадобится
программа    конвертирования    экран   в
chunk 'и, мне известна пока только одна -
Hardcore , он же их и редактировать потом
сможет.  А  так  же какой-нибудь редактор
шрифтов.

     1. Берем  стандартный набор ( или M.
WORD , он хранится в файле wordfont.<C> )
в  256 символов. Тут мы столкнемся с пер-
вой  трудностью.  Фонт из этих редакторов
не  может быть исправлен просто фонт эди-
тором,  потому как он имеет не совсем или
совсем  не стандартную структуру (в прос-
том  понимании  ),  а именно для скорости
при  печати  символа  байты располагаются
так:  Первый байт, через 256 байт Второй,
через еще 256 Третий и так далее...
     Если  вы используете в своем вьювере
не  такой фонт, то вам его придется пере-
делать.  Я воспользовался такой процедур-
кой:

     ORG #7000

     LD HL,#8000; zx-word 'овский шрифт,
     LD DE,#6000; получившийся шрифт.
     LD BC,256
     LP PUSH BC
     PUSH HL      ;все тупо и просто,
     LD B,8       ;как все мои творения.
     LP2 LD A,(HL);может можно п-цу и
     LD (DE),A    ;поменьше сделать, но
     INC H        ;Зачем? Я же тут не
     INC DE       ;про демомейкинг пишу.
     DJNZ LP2
     POP HL
     INC HL
     POP BC
     DEC C
     JR NZ,LP
     DEC B
     JR NZ,LP
     RET


     Так  же  вам после понадобится и эта
процедурка. Она аналогична первой, но пе-
ределывает   фонт  из  нормального  в  М.
WORD 'овский.

     ORG #7000

     LD DE,#8000; нормальный шрифт,
     LD HL,#6000; извращенный для zx-wd
     LD BC,256
     LP PUSH BC
     PUSH HL
     LD B,8
     LP2 LD A,(DE); РАЗЛИЧИЕ С ПЕРВОЙ
     LD (HL),A    ; ПРОСТО "ГЛОБАЛЬНЫЕ".
     INC H
     INC DE
     DJNZ LP2
     POP HL
     INC HL
     POP BC
     DEC C
     JR NZ,LP
     DEC B
     JR NZ,LP
     RET


     Все  понятно,  как божий день. Итак,
вы переде лали фонт, теперь внесем в него
изменения на каких-нибудь, то есть на са-
мых  ненужных  символах.  Я бы предложил,
начиная с 240, по порядку вносим текстуры
aka  Chunk 'и.  Найти  чанки не просто, а
очень просто, поэтому их тут не будет.

     Вы  вставили  в свой шрифт эти текс-
турки и записали на диск, не забыв закон-
вертировать  обратно в формат М. Word 'а,
если,  конечно, вы собираетесь просматри-
вать  полученный шедевр с помощью него, в
противном  случае, последнее можно не де-
лать.

     2. Загружаем программу перевода кар-
тинки в chunk 'и и перекодируем ее, полу-
ченное  записываем  на  диск.  Далее  вам
опять  предется загрузить ассемблер и еще
раз  извратиться над готовой чанк картин-
кой. Набираем такую процедуру. Звездочкой
отмечены  команды,  которые можно убрать,
если  вы  будете использовать ZX-word или
m.  word ,  т.  к.  они автоматически, то
есть после соответствующего запроса пере-
ведут  текст  в  кодировку  с  окончанием
#0D/#0A, собственно, что и делают команды
со  звездочками. A суть поцедуры проста -
мы добавлям к каждому chunk 'у код начала
размещения наших chunk 'ов в фонте, у нас
в примере это #F0 (240).

     ORG #8000

     LD DE,#7000; начало экрана из chunk'ов
     LD HL,#6000; текст, который мы получили
     LD C,48
LP1
     LD B,64
LP2  LD A,(DE)
     ADD A,#F0; код начала чанков
     LD (HL),A
     INC HL
     INC DE
     DJNZ LP2
     LD (HL),#0D; *
     INC HL     ; *
     LD (HL),#0A; *
     INC HL     ; *
     DEC C
     JR NZ,LP1
     RET


     Записываем полученный текст на диск,
если  вы  использовали процедурку полнос-
тью,  то  длина  файла должна быть равной
#C60 (3168) байт.

     А теперь загружаем полученный шедевр
в редактор Modern Word , вместе с фонтом,
который надо назвать wordfont.<C> , или в
ту  текстовую  гляделку,  в которую можно
загрузить фонт, и смотрите на здоровье, и
вы  увидите  такую картину. Ваша картинка
стала  размером в два экрана, что, собст-
венно, и отличает второй метод от третье-
го.


     Метод нумбер ТРЫ.


     1. Изменяем фонт как указано в пунк-
те  1  метода  два,  и загружаем его в M.
Word  или куда там, где есть перекодиров-
щик.

     2. Изменяем  таблицу градаций,  в M.
Word 'e  она  называется wordasci.<C> , и
ставим там свои chunk 'и от самого яркого
до  самого  не яркого, то есть пустого. В
нашем  случае  мы  нажимаем extend mode и
пишем  код с клавиатуры: 240, 241... 255.
Записываем  таблицу  на диск и перезагру-
жаем  редактор  что бы он воспринял новыю
таблицу и фонт.

     3. Запускаем опцию перекодировки эк-
рана в текст и получаем экран уже переве-
денный  в  текст,  который  можно и будет
после этого пронаблюдать. Вот самый прос-
той и приемлемый способ.

     Наверное,  здесь и пример можно пос-
мотреть.







     Итак,  вот,  собственно, и все. Мною
недавно  освоенные,  но  давно  уже всеми
применяющиеся на практике методы борьбы с
тараканами  описаны,  и  осталось  только
привести  начальный  вид  экрана, который
переделывался, хере из он:








Постскриптум,   для   тех,  кто   не  по-
нял - P.S.
     Эти методы подходят только для режи-
     ма  отображения 64 символа в строке.
     И  для  редакторов,  в  которых есть
     опция загрузки шрифта, в zx-word 'e,
     по крайней  мере, такая  функция  не
     наблюдается.
     Лучше  всего для переделки моими ме-
     тодами  подходят  перетащенные  с пц
     картинки, на  которых предметы изоб-
     ражены покрупнее, саморучно рисован-
     ные переделываются хреново.
     Если кто придумал более извращенный
     метод, чем я, то прошу, напишите мне
     по  совершенно  простому  и легко не
     запоминающемуся адресу:

     г. Рыбинск,
     ул. Черепанова, д. 5, кв. 14,
     Крылову Александру Александровичу,
     индекс 152905.

*****************************************

ХМ, БРЕД КАКОЙ-ТО, ЗАЧЕМ РАССКАЗЫВАТЬ ЛЮ-
ДЯМ, НЕ  ЗНАЮЩИМ  АССЕМБЛЕРА, О  ТОМ, КАК
ДЕЛАТЬ  СИМВОЛЬНЫЕ  КАРТИНКИ, ЕСЛИ  ИМ  И
ВСТАВЛЯТЬ ИХ НЕКУДА...
И  НАФИГА  ПИСАТЬ  БРЕДОВЫЕ ПРОЦЕДУРЫ, ДО
КОТОРЫХ И ТАК МОЖНО ДОПЕРЕТЬ САМОМУ...
И ВАЩЕ, СТАТЬЯ - ПОЛНЫЙ  БРЕД...
И АВТОР - ЛАМЕР...
И  ПОМЕСТИТЬ  НАДО   В   СПЕЦ.   РАЗДЕЛ -
<<<ЛАМЕРУ ОТ ЛАМЕРА>>>...
И ПРИЧЕМ ТУТ КАРТИНКИ???






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

Похожие статьи:
От автора - Здравствуйте, уважаемые читатели!
Warыыыz - Обзор софта.
С битой по миру - об истории развития спектрумизма.

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