Pull to refresh
Comments 90
Спасибо! Проностальгировал :) Вспомнились былые времена, когда тоже игрался над созданием графики в турбопаскакале и асме :)
Поиск тоже вспомнился :) Был еще смоленский «Ассисент» с 8086 — 128kb :)
Да… Помню месяца 2 убил на то, чтобы на связке асма и паскаля добиться максимальной реалистичности огня…
А я посмею взять на себя ответственность и расказать подробней об технической части всего этого.

1. Сначала нужно установить графический режим.
asm 
   mov ax, 13h   // 320х200 256 colors mode
   int 10h           
end;

2. Потом указать палитру. z — индекс цвета. r, g, b — яркость красного, зеленого, синего. 0 <= r,g,b,z <= 255
Вот такую функцию нужно для каждого z запустить.
asm 
   mov dx, 0x3c8
   mov ax, z
   out dx, al
   mov dx, 0x3c9
   mov al, r
   out dx, al
   mov al, g
   out dx, al
   mov al, b
   out dx, al
   int 10h
end;

3. Ну и теперь можно выводить пиксели на экран тупо записывая что-то в память с $A000:
$A000:[(320*y)+x]:= color;
и на экране появиться пиксель цвета color с координатами [x, y]

Остальное — дело математики.

P. S. про old school компьютерную графику буду расказывать на 5ой киевской хабровстречи, и через пару недель появится статья и на самом хабре
0 <= r,g,b <= 63, более старшие биты не используются.
Во второй процедуре int 10h — лишнее.
8 лет не трогал, бес попутал. Спасибо за исправления.
Этот код:

mov ax, 13h
int 10h


и прочие лодсвы и стосвы мне до сих пор снятся :)

Спасибо за частичку вашей жизни!
Демки тормозящие на Pentium 166? Ну-ну, настоящий олдскул.
Не говоря о том что собственно ничего оригинального так и не показали, были вещи намного красивее.
Ну, если конкретезировать, то подтормаживали только «воксели», все остальное шло плавно. И это было технической «демкой», так и не переросшей в часть какой-либо настоящей демки. Оригинального — действительно ничего, в этом я с вами согласен, и про это писал в статье.
Но, давайте взглянем на ваши примеры, пускай даже это будет банальный вертящийся кубик?
Всё правильно сказали, кроме последнего предложения. Пожалуйста, не используйте отмазку Уве Болла.
видел в свое время вращающиеся друг вокруг друга тетраэдр, куб и икосаэдр, сделанные в текстовом режиме (sic!) за счет постоянной смены символьных масок. сам бы так не смог в то время, а сейчас не захотел бы время тратить. но впечатлился
Не каждое демо обязательно должно быть Second Reality.
Елки, да я ведь с тех же цветных прямоугольников начинал когда-то. Да, это был обычный делфи, там все было тривиально, но ведь было и работало :)
Ааааа! Спасибо за статью. Вспомнил свой первый «снег» и «огонь» на Поиск+QBasic. Шикарное ностальжи.
Ах да, перед QBasic был же еще Turbo Basic. Он мне как-то больше нравился.
Turbo Basic был адом :) У него компилятор глючный был, при довольно больших листингах программы появлялись нереальные баги.

ЗЫ: Не путайте Qbasic и QuickBasic, первый был урезанной версией, без компилятора и шёл с MS-DOS, второй был отдельной полноценной средой разработки, с компилятором, возможностью подключать библиотеки и работающий на порядок быстрее чем Qbasic.
Музыка в рекламном ролике напомнила об эпохе восьмибитных приставок :)
В свое время тоже увлекся ассемблером и даже как-то писал свои танчики, естественно с блекджеком, но дело до конца так и не довел — появились более важные занятия. А вы молодец, особенно с HorizontCommander!
UFO landed and left these words here
Спасибо, да Horizont Commander был мегапроект )) Самое интересное, что чуть-чуть не доделов его для DOS он был переписан полностью с нуля для OS/2. К сожалению сорцы для OS/2 канули в лету, вместе с винтом на 450Mb.
Какой знакомый путь, а так да семья работа, работа семья. Спасибо.
Обычно перед Corp (или Incorp) ставились иннициалы. Меннее и более оригинальные скромные придумывали названия содержащие Sovie, Russian, East или скромно Moscow (Spb, Gadukiono, etc).

Сам проходил все стадии;) И огоньки завораживали настолько, что дизасемблировал чужой демо-код и потом переписывал на том же ассемблере или в последствии на java, играясь с высотой и количеством «языков»)
Эх, напомнили мне о моем поделии.
Писал несколько лет, начиная с класса эдак 9ого и до 1 курса института.
Это была 2Д-аркада, с текстурами, звуками и спрайтами от Hexen.
Что-то вроде Doom2D для Doom, только для Hexen. Хотя мое поделие было более технологичным, умело исполнять скрипты для оригинального Hexen (ACS), загружало оригинальные WADс картами для Hexen, сделанные в любом совместимом редакторе (WAD Author я использовал), только что карты должны были быть нарисованы особым образом, т.е. не проекция на плоскость XY, как в 3Д Hexen, а натурально, вид сбоку, как и будет видно в игре)
Писалось оригинально на Borland C, но потом стало не хватать EMS, XMS и прочих хитрых методов работы с памятью, и перелез на Watcom C, DOS экстендеры и защищенный режим )
Ух, сколько я многого узнал о работе с графикой, прерываниями и разными форматами файлов…
Ностальгия) Жаль исходники утеряны…
Как давно и как волшебно это было. Книгам предпочитал teach60. Когда появилась поддержка vesa кодил с её помощью. Написал целый набор юнитов для работы с графикой 16,24,32 бита. Как хардкорно это было. В итоге был интерфейс похожий на старкрафт. Mbr загрузчики для дискет и винта, в экспериментах умирала таблица разделов и все по новой. И много много всего. Было время :)
ЗЫ Спасибо. Покопался в исходниках понастальгировал.
Всегда пожалуйста ) BTW, все-таки не teach60, а tech60 (Tech Help 6.0). Я кстати уже только в конце эпохи начал им пользоваться, до этого был просто текстовый листинг Ralf Brown Interrupt List.
Как похоже на меня в старших классах и начале института! Некоторые демки практически один в один. И да, тоже был сначала Бэйсик, а потом Паскаль с asm-вставками.
Не знаю как насчет счастья, но тормозило все адово )) Вот 286 по сравнению с 88 — вот это счастье было
Тьюториалы посоветуйте про это дело, пожалуйста.
Не понял вопрос? В оригинале оно называлось так, как я указал в статье. Как автора звали в реале неведомо.
Отпишитесь в комментариях известные демомейкеры (или иные участники демо и сценерских групп), интересно кто на хабре присутствует :)
Кстати, недавно занялся тем же самым. Поставил досбокс, и записал видео своих старых демок девяностых годов.

webhamster.ru/site/page/index/demodesign

На подходе запись самодельных игр для Микроши, но дело осложняется тем что в эмуляторах они не работают, ибо по наивности использовали нащупанные на ощупь аппаратные особенности компьютера.
А вы много эмуляторов пробовали? Встречаются даже очень точные.
Я пробовал все какие существуют, включая виндовый Emu3000.

Даже с Виктором Пыхониным закорефанился, он мне дал исходники своего эмулятора. Я хотел его сделать кроссплатформенным и добавить свои исправления чтоб игры работали. Но, как оказалось, в нем половина кода написана на чистом ассемблере, так что для кроссплатформенности надо фактически с нуля писать.

Пока решил взять за основу пролетавший здесь на хабре JavaScript эмулятор. Но он не поддерживает настройку графических режимов и звук. Так что если и браться, то работы выше крышы.

Эм, а вам важно, чтобы эмулятор на всяких ARM и Android работал?
Если мне не изменяет память, был проект по написанию универсального точного эмулятора процессора 8080. Тогда достаточно будет написать эмулятор обвязки. Не самая простая задачка, конечно же.
UFO landed and left these words here
Хорошо вам. А у меня, к сожалению, кассет с моими поделиями не сохранилось.
А интерфейс для дискет под Spectrum было тогда фиг достать.
UFO landed and left these words here
Будет возможность, проверьте следующее:
Напишите какую-нить строчку с командой, потом
EDIT
EXTEND MODE
0
стрелка влево
стрелка вправо
0
ENTER

Эта штука на эмуляторах, которые я пробовал, не работала. На аппаратной Дельте-С работала.
В результате строчка команды становится невидимой и недоступной для редактирования по кнопке EDIT, при нажатии на нее раздается сигнал. А текст программы, идущий за этой строчкой, не отображается на экране. Соответственно, если каждую строчку так обработать, текст программы можно было достать только по выводу с адреса 23755 (адрес программы на бейсике в адресном пространстве Spectrum 48-64 Kb). Там еще номер строчки патчить ручками можно (через POKE), но это совсем другая тема, да и заезженная до дыр в свое время.
Может быть таким путем длина строки команды меняется на ноль, не могу сказать, тогда это в голову не пришло, а щас проверить негде.
UFO landed and left these words here
Да ладно кассет… Я потерял тетрадку, куда записывал листинги программ на бейсике. Магнитофон у меня быстро сломался, пришлось учиться программированию, не мог загрузить игры же ( Был тогда в 3-ем классе.
Хехе. Я точно так же делал, когда первый компьютер сломался :) И, кстати, тоже в 9 лет.
да-да-да, на дискетах наклейка обычна была исписанной напрочь, притом у более опытных товарищей (у которых дискета была не первой) наклейки были исписаны в три слоя, но карандашом ;)
Хех на мою первую зарплату (лаборант в институте) можно было купить 6 3х дюймовых дискет, ну поторговавшись — 10 ;)
У меня еще 5.25" дискеты сохранились, с MS-DOS 3.21 и прочим :-)
Там на дискетку 360Кб столько влезало, что поверить сложно! )
UFO landed and left these words here
Ностальгически, спасибо! У меня, правда, началось с копирования заставки из «600 секунд».
Посмотрел щаз на ютубе. Ничего заставка, с фидбек-эффектом )
UFO landed and left these words here
Именно, именно, именно — волшебная связка TP + ASM делала нас Богами. Мы снисходительно похлопывали молодых, освоивших прерывания и читающих порты. Теперь молодые снисходительно похлопывают нас, ставших на рельсы и Obj-C…
Среди стариков все еще есть такие, кто не трогал Obj-C, рельсы
стариками можно считать тех, кто начал писать на асме в 98 году?
спорно. я вот в свои 22 года считаю себя стариком. начинал pas/asm в 2001 — 2002.
Скорее относительно.
Я в это же время (2002) сдал предпоследний свой коммерческий проект, завязал с реверс-инжинирингом (реверс того же netbus'а и написание своего сканера-листенера для него), написал последние статьи по битхаку, последний патч, правда, релизнул в 2003. И до сих пор имею слабое представление об Obj-C и никакого о рельсах, что, в общем-то никак не мешает сейчас.
Стариком при этом всем себя не считаю. Потому что есть еще много чего интересного, чего я не знаю и хотел бы изучить.
Стариками становятся когда есть что вспомнить и при этом нет желания двигаться дальше.
Подскажите пожалуйста есть ли какието туториалы\статьи для самым самым азам современного демостроительства?
Заранее спасибо.
Сори, по диагонали прочитал ваше сообщение. Это не современные (это конец 90-х), но зато азы.
спасибо, пронастальгировал
именно так и начинал Поиск-2, BAT-файлы, GW Basic, QBasic, Pascal, TASM, ANSI C…
а как закончил? Project Management :-(

:-)
UFO landed and left these words here
Что за музыка играла в Year: 1998-99?
Очень знакомая, слышал её в какой-то демосцене древней. Там еще какой-то воин был нарисован и надпись вроде Акира или ей подобная. А вот с какой реальной композиции сделана была музыка?
Сложно сказать, у меня этот файл называется в оригинале FOXES.HSC, наверняка я его дернул из какой-то демки. Из какой конечно уже сложно сказать.
Первый раз когда я игрался с графикой в Qbasic было два года назад на уроке информатики. Давно уже сделал заданную работу (а все остальные ещё её делали) и начал экспериментировать, узнавая для себя крутые возможности бэйсика
Ох, прям прослезился.

В конце 90-х начале нулевых тоже баловался паскалем, ассемблером и их комбинацией.
Поначалу хотел писать свой менеджер файлов, но заинтересовался упаковкой исполняемых файлов и в качестве курсовой сделал WFSoftMaker — EXE — упаковщик для DOS. (PAS, ASM).
Интерфейс был как у RAR, и ещё там были три мегакрутых экранные заставки. Одна точно огонь, а две других уже и не помню… Плазма и звёзды наверное.
Самое крутое достижение было в первой самостоятельно написанной крупной утилите на ASM — шифорвщике COM-файлов (упаковщик я уже написал позже и не релизил вообще).
Шифровка была по XOR-у, и часть механизма заимствована из какого-то вируса.

Сейчас к сожалению не могу найти ни исходиников ни даже скриншотов WFSoft Maker.
Остался только огузок моей домашней странички в WebArchive.
Впрочем, есть слабая надежда, что всё это где-то ещё лежит на первых CD-R блованках, которые я когда-то записывал.
Каждая такая болванка была очень важна. Сейчас наверное эти болванки выцвели, окислились или ещё как-нибудь испортились временем.
Хм… Сергей Найденов? :) Привет тебе от Tornado 2.0 :)))
Хм… Торнадо 2.0? А что с ней? Я разве участвовал в допиливании? Вроде бы — нет ) Помню писал оболочку типа с интерфейсом NC на скриптовом языке, а так нет…
Начинал я с советского полу-IBM совместимого компьютера «Поиск». Конфа: аналог i8088 процессора, CGA монитор. Начал «программировать» с batch-файлов (.BAT) ибо была книжка по MS-DOS и дискетка с этим самым MS-DOS.
Прямо про меня написано. Только у меня еще была книжка про Бейсик, но не было интерпретатора. Поэтому я научился Бейсику виртуально. И когда в школе (да и в универе) изучали QBASIC, я был мегапрогер :)
Статья клёвая :) Сам всё хотел такую написать, про свой «путь демомэйкера» :) Но ты меня опередил. Надо будет поднапрячься, поискать свои старые поделки на старых винтах, да написать свои мемуары )
У меня одними из первых программ были анимации на LOGO — нас в школе учили программировать при помощи черепашки, бегающей по экрану и оставляющей след. :) Сначала окружности, потом «скрипичные ключи», обнаружилась возможность стирать и рисовать по кадрам, потом пошло-поехало: бегающие человечки, переливающиеся цветы и прочие красивости.

Очень обидно, что программы не сохранились. :(
Only those users with full accounts are able to leave comments. Log in, please.