[Assembler, Компьютерная анимация, Звук] Демка Gespensterwald умещается в 62 байта кода языка ассемблера x86
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
В начале октября 2020 года программист-энтузиаст HellMood из группы DESiRE выпустил демку для MS-DOS/FreeDos под названием Gespensterwald. Программа размером в 62 байта написана на ассемблере. Демка сейчас занимает первое место в соревновании разработчиков Inércia Demoparty 2020 Combined Tiny Intro.
Автор демо постарался показать в нескольких строчках кода в 3D анимации угрюмый и жуткий лес, около которого он живет. HellMood добавил в демо необычное гудение, которое иногда возникает в этом реальном лесу.
Gespensterwald Nienhagen — это небольшой старый лес Нинхаген в Германии на побережье Балтийского моря (между Хайлигендаммом и Варнемюнде). У него причудливые деревья, которые выглядят зловеще. Когда идет дождь или лес окружает туман, создается впечатление, будто в нем происходит что-то мистическое. Лесополоса занимает площадь протяженностью 100 метров и шириной 1,3 километра. В лесу растут 130-летние дубы, буки, грабы и ясени.
Извините, данный ресурс не поддреживается. :(
Код демки Gespensterwald.
DB 60 ; 1st run piano, then french horn
DB 0x9B, 25, 114 ; play note 25 with volume 114
NOP ; align executable music data
MOV AL, 13h ; set graphic mode
INT 10h ; 320x200 pixels, 256 colors
Y: MOV CL, 62 ; 62 = length of this code
PUSH SI ; save pointer to music data
MOV DX, 0x330 ; MIDI port (requires UART)
REP OUTSB ; send code as data to MIDI port
POP SI ; restore pointer to music data
PUSH 0xA000 ; set ES to start of visible screen
POP ES ; 2 extra bytes to work everywhere
X: MOV BL, 126 ; Depth D, start at ~0 (signed)
L: INC BX ; D++, advance ray
MOV AX, 0xCCCD ; Rrrola trick, convert screen
MUL DI ; ... pointer DI to Y,X in DH, DL
MOV AL, DH ; get Y in AL
ADD AL, 92 ; center forest in the middle
IMUL BL ; Y' projection, result in AH
XCHG AX, DX ; save Y' in DH, get X in AL
MUL BL ; X' projection, result in AH
ADD AX, BP ; X'' = X' + T (high byte of BP)
OR AH, BL ; sierpinski pyramid formula
AND AH, DH ; H = ( X'' | D ) & Y'
JNZ L ; if not hit, continue ray
XCHG BX, AX ; get number of steps in AL
INC AX ; map number of steps ...
SHR AL, 3 ; .. to black white scale
STOSB ; write pixel value and advance
IMUL DI, BYTE 85 ; antiflicker, rough look
LOOP X ; frame loop (65536 pixels)
ADD BP, SI ; T++, high byte of BP (SI=100h)
JMP SHORT Y ; repeat, also change instrument...
Вариант демки Gespensterwald без звука занимает 44 байта.
===========
Источник:
habr.com
===========
Похожие новости:
- [Гаджеты, Биографии гиков, Периферия, Звук] «Выходной со звуком»: интервью с инженерами аудиосистем и отчеты с онлайн/оффлайн выставок
- [Звук, Мозг, Здоровье] «Умопомрачительный ритм»: как наш мозг генерирует измененные состояния сознания — новое исследование
- [Умный дом, Звук] «Ремонт для звука»: разбираемся с акустической подготовкой помещения — 10 тематических материалов
- [Периферия, Носимая электроника, Звук] Аудиобубен лейтенанта Шмидта: три совета о том, как потратить время и деньги, не улучшив звук наушников
- [Производство и разработка электроники, Периферия, Физика, Звук] Аудиофилькина грамота: о частотном диапазоне, возрасте, виниле и АЧХ тарелок Pink Floyd
- [Звук, Носимая электроника, Периферия, Производство и разработка электроники] Личные пристрастия: Sennheiser HD 560S или о том, какие наушники можно купить за $ 200
- [DIY или Сделай сам, Звук, Периферия, Производство и разработка электроники] Хорошо забытое новое: Falcon Acoustics возрождает DIY-акустику и продаёт колонки-конструктор за 150 000 рублей
- [Звук, Научно-популярное, Системное программирование] Звук. От механических колебаний до ALSA SoC Layer
- [Звук] Пневматический дискретный громкоговоритель
- [Дизайн, Интернет-маркетинг, Компьютерная анимация, Работа с векторной графикой, Разработка веб-сайтов] Разбор: зачем нужны анимации на сайтах + 7 полезных инструментов и библиотек для их создания
Теги для поиска: #_assembler, #_kompjuternaja_animatsija (Компьютерная анимация), #_zvuk (Звук), #_gespensterwald, #_64_bajta (64 байта), #_assembler (ассемблер), #_assembler, #_kompjuternaja_animatsija (
Компьютерная анимация
), #_zvuk (
Звук
)
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 23-Ноя 00:20
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
В начале октября 2020 года программист-энтузиаст HellMood из группы DESiRE выпустил демку для MS-DOS/FreeDos под названием Gespensterwald. Программа размером в 62 байта написана на ассемблере. Демка сейчас занимает первое место в соревновании разработчиков Inércia Demoparty 2020 Combined Tiny Intro. Автор демо постарался показать в нескольких строчках кода в 3D анимации угрюмый и жуткий лес, около которого он живет. HellMood добавил в демо необычное гудение, которое иногда возникает в этом реальном лесу. Gespensterwald Nienhagen — это небольшой старый лес Нинхаген в Германии на побережье Балтийского моря (между Хайлигендаммом и Варнемюнде). У него причудливые деревья, которые выглядят зловеще. Когда идет дождь или лес окружает туман, создается впечатление, будто в нем происходит что-то мистическое. Лесополоса занимает площадь протяженностью 100 метров и шириной 1,3 километра. В лесу растут 130-летние дубы, буки, грабы и ясени. Извините, данный ресурс не поддреживается. :( Код демки Gespensterwald. DB 60 ; 1st run piano, then french horn
DB 0x9B, 25, 114 ; play note 25 with volume 114 NOP ; align executable music data MOV AL, 13h ; set graphic mode INT 10h ; 320x200 pixels, 256 colors Y: MOV CL, 62 ; 62 = length of this code PUSH SI ; save pointer to music data MOV DX, 0x330 ; MIDI port (requires UART) REP OUTSB ; send code as data to MIDI port POP SI ; restore pointer to music data PUSH 0xA000 ; set ES to start of visible screen POP ES ; 2 extra bytes to work everywhere X: MOV BL, 126 ; Depth D, start at ~0 (signed) L: INC BX ; D++, advance ray MOV AX, 0xCCCD ; Rrrola trick, convert screen MUL DI ; ... pointer DI to Y,X in DH, DL MOV AL, DH ; get Y in AL ADD AL, 92 ; center forest in the middle IMUL BL ; Y' projection, result in AH XCHG AX, DX ; save Y' in DH, get X in AL MUL BL ; X' projection, result in AH ADD AX, BP ; X'' = X' + T (high byte of BP) OR AH, BL ; sierpinski pyramid formula AND AH, DH ; H = ( X'' | D ) & Y' JNZ L ; if not hit, continue ray XCHG BX, AX ; get number of steps in AL INC AX ; map number of steps ... SHR AL, 3 ; .. to black white scale STOSB ; write pixel value and advance IMUL DI, BYTE 85 ; antiflicker, rough look LOOP X ; frame loop (65536 pixels) ADD BP, SI ; T++, high byte of BP (SI=100h) JMP SHORT Y ; repeat, also change instrument... Вариант демки Gespensterwald без звука занимает 44 байта. =========== Источник: habr.com =========== Похожие новости:
Компьютерная анимация ), #_zvuk ( Звук ) |
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 23-Ноя 00:20
Часовой пояс: UTC + 5