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. ***************************************** ХМ, БРЕД КАКОЙ-ТО, ЗАЧЕМ РАССКАЗЫВАТЬ ЛЮ- ДЯМ, НЕ ЗНАЮЩИМ АССЕМБЛЕРА, О ТОМ, КАК ДЕЛАТЬ СИМВОЛЬНЫЕ КАРТИНКИ, ЕСЛИ ИМ И ВСТАВЛЯТЬ ИХ НЕКУДА... И НАФИГА ПИСАТЬ БРЕДОВЫЕ ПРОЦЕДУРЫ, ДО КОТОРЫХ И ТАК МОЖНО ДОПЕРЕТЬ САМОМУ... И ВАЩЕ, СТАТЬЯ - ПОЛНЫЙ БРЕД... И АВТОР - ЛАМЕР... И ПОМЕСТИТЬ НАДО В СПЕЦ. РАЗДЕЛ - <<<ЛАМЕРУ ОТ ЛАМЕРА>>>... И ПРИЧЕМ ТУТ КАРТИНКИ???
Другие статьи номера:
Похожие статьи:
В этот день... 21 ноября