В началото на този месец програмистът ентусиаст HellMood от екипа DESiRE представи демонстрационната програма Gespensterwald за MS-DOS/FreeDos. Това е програма от само 62 байта, написана на асемблер. Тя заема първото място за 2020 година в състезанието за програмисти и разработчици Inércia Demoparty 2020 Combined Tiny Intro.
Авторът на тази интересна демонстрационна програма се е постарал в едва няколко реда код да представи триизмерна анимация на тъмната и страшна гора, близо до която живее. HellMood е добавил в своето демо и специфичното бучене, което понякога се появява в истинската гора.
Gespensterwald Nienhagen е гора в Германия, намираща се на брега на Балтийско море. Там могат да се видят големи странни дървета, които изглеждат зловещо. Когато вали дъжд или има мъгла се създава впечатление за нещо мистично.
Ето го и сорс кода на демонстрационната програма 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 байта.
Всичко важно от света на технологиите, директно в пощата ти.
С абонирането приемате нашите Условия и Политика за поверителност. Може да се отпишете с един клик по всяко време.
Коментирайте статията в нашите Форуми. За да научите първи най-важното, харесайте страницата ни във Facebook, и ни последвайте в Google Новини, TikTok, Telegram и Viber или изтеглете приложението на Kaldata.com за Android, iPhone, Huawei, Google Chrome, Microsoft Edge и Opera!