Hormatilah kehormatan dan sebagian demi sebagian. Sesuatu seperti ini kami akan membenamkan Anda dalam dunia demoscene yang menakjubkan. Hari ini kita akan berbicara tentang pekerjaan khusus di bidang sizecoding. Faktanya adalah bahwa beberapa rilis tidak hanya memiliki status kultus dalam lingkaran sempit - mereka secara langsung dan jelas mempengaruhi pikiran orang, memaksa mereka untuk belajar IDA Pro, menonton kode, dan menembus ke semua detail terkecil. Itu benar-benar tidak dapat dipahami dan sangat menarik bagaimana sihir itu bekerja.Ini adalah umpan silang oleh Queue Members Group - 128 byte intro untuk PC dari jarak jauh tahun 1996:
Ini adalah video hasil kerjanya:Singkatnya, bagaimana kakek berjuang ... Setelah keberhasilan Enlight'95 dalam DIDO -konferensi FIDO. DESIGN , sebuah kontes virtual diumumkan untuk pembuatan pekerjaan 128-byte untuk PC. Dia berjalan selama beberapa bulan, panitia mengumpulkan hasilnya, memilih dan menentukan pemenang. Seluruh arsip rilis dengan Demo design'96 tersedia di Pouet untuk ditinjau. Pemenangnya adalah umpan silang dari Mad Max / Queue Members Group . Grup QMG berasal dari Samara, pada waktu itu orang-orang itu adalah mahasiswa dari salah satu universitas teknis, dan Mad Max sendiri adalah pemimpin seluruh tim.Kontes ini begitu "mengguncang" pikiran muda di seluruh negeri sehingga panitia Enlight'96 mencetak t-shirt dengan cetakan cross-dump di punggung mereka. Berikut adalah beberapa foto arsip:

Dan bidikan dari video tentang Enlight'96:
Pada bulan Maret 2020, grup = R MDA = (yang secara resmi saya wakili di sini) berhasil mengimplementasikan proyek pelestarian digital karya bersejarah ini. Kami mulai dengan membuat video ... Ya, video dangkal, yang kemudian diunggah ke YouTube. Sebelumnya, selama 25 tahun, versi video cross tidak ada, dan untuk menontonnya diperlukan DosBox kung fu yang kuat, yang tidak dimiliki semua orang.Selanjutnya, kami telah mengumpulkan dalam arsip tunggal semua bahan tambahan, termasuk lintas kode sumber. Sayangnya, penulis tidak mempublikasikan kode sumber pada saat itu, terlebih lagi, dari kata-katanya, perubahan terbaru pada karya dibuat sama sekali di editor HEX. Karenanya, kode sumber di bawah ini adalah kebalikan dari yang asli dengan komentar kami:; NASM or FASM
org 100h
mov bx,es
add bh,10h ; bx = cs + 1000h
mov es,bx ; es = segment behind 64k of our code (extra video buffer)
mov ds,bx ; ds = es
xor ax,ax
mov cx,ax
dec cx ; cx = -1
rep stosb ; clear extra video buffer
dec ax ; ax = -1
mov di,0A2D0h ; set pointer to pixel at 130,80 (col,row)
mov cl,80
rep stosw ; fill 80*2 = 160 pixels by 0FFh color (draw horizontal line)
mov bx,19A0h ; set pointer to pixel at 20,160 (col,row)
v: mov [bx],ax ; draw vertical line...
add bx,320
ja v ; ...until bottom
mov ax,13h
int 10h ; set 320x200 (256 colors) graphical video mode
mov dx,3C8h
xor al,al
out dx,al ; start palette set from 0 color
inc dx
mov cx,0C0h*3
rep outsb ; set first 0C0h (192) colors to black
p:
out dx,al ; red component
outsb ; green = 0
outsb ; blue = 0
inc ax ; increase color (1, 2, 3..63)
cmp al,64
jb p ; set colors 0C0h..0FFh to red gradient (from dark to saturated)
mov ch,0A0h
mov ds,cx ; ds = 0A000h = vedeo segment
l: ; bx = pixel pointer, dx = pixel pointer delta value (initial values doesn't matter)
cmp bh,0FAh
jae s ; jump if current pixel is out of screen
mov al,[bx] ; else get color of pixel
cmp al,0C0h
jb s ; jump if pixel color is out of red gradient range (0C0h..0FFh)
; flame effect
dec ax ; else decrase color by 1 (make it darker)
mov [bx+1],al
mov [bx-1],al
mov [bx+320],al ; di = 320
mov [bx-320],al ; and fill pixels around the current by new color
mov si,-640 ; position delta: 2 lines up
test dh,80h
jnz n ; jump if dx is negative (poor pseudorandom boolean check)
add si,2 ; wind effect
n: mov [bx+si],al ; add pixel 2 lines higher than current pixel considering possible wind
s:
; restore cross
mov al,[es:bx] ; get color from extra video buffer
or [bx],al ; replace pixel on screen by 0FFh is al = 0FFh (slow cross redraw)
add bx,dx ; increase pixel pointer by (pseudorandom) delta value
inc dx ; increase delta value
or bx,bx
jnz l ; loop until full screen will be processed
in al,60h ; read keyboard scan code
cmp al,1
jnz l ; repeat if Esc key is not pressed
mov al,3
int 10h ; set text video mode
ret ; return to DOS
Sudah jelas bahwa dalam proses membalikkan kode ke sumber, programmer x86 utama kami mendapat ide untuk optimasi. Ini adalah bagaimana cross2 ternyata - ini membutuhkan 1 byte lebih banyak (127 bukannya 126), tetapi semua yang dioptimalkan dihabiskan untuk teks dan suara. Kami mengubah warna menjadi hijau sehingga Anda tidak secara visual membingungkan karya-karya ini:Tidak ada gunanya mengejek warisan sejarah di sini, hanya sizecoding yang dapat dioptimalkan lebih dari beberapa byte dari waktu ke waktu. Waktu berlalu dengan sangat baik, hampir 30 tahun, dan optimasi ternyata signifikan - 20 byte (hampir 16% dari kode). Pekerjaan kami adalah satu byte lebih lama dari aslinya (13 byte teks ditambahkan ke kode, 6 byte kode untuk output, 2 byte per suara = 21, dikurangi perbedaan ukuran 1 byte).Sebenarnya semuanya! Sumber cross2 dapat ditemukan dalam arsip di Pouet dan bandingkan secara visual dengan aslinya. Terima kasih banyak kepada Peter [katak] Sobolev dan Mike [Mad Max] Shirobokov untuk saran dan bahan selama pengembangan proyek ini.--- EOF ---#FF - Dan seluruh byte tidak cukup ... | Pilot)# 00 - MBM ... | Undangan ke Revision Online 2020# 01 - IBMP ... | Apa itu intro?# 02 - MBM ... | Salib Perubahan# 03 - IBMP ... | 2B atau tidak 2B# 04 - IBMP ... | Kami mengambil BC dengan klakson# 05 - ICBM ... | Anime# 06 - IBMP ... |Saluran Hiburan Meteorisme Kakek di Telegram:teleg.run/borndedAda obrolan di sebelah saluran. Di dalamnya, Anda dapat mencoba mengajukan pertanyaan untuk demoscene, assembler, pixel art, musik pelacak dan aspek lain dari proses. Anda dapat dijawab atau dikirim ke obrolan lain yang lebih bertema.Jadi mereka menang - jadi kami menang!