Karya saya untuk Outline 2020

Pada 22-24 Mei, pemungutan suara online demopati 2020 berlangsung. Acara ini direncanakan untuk Mei tahun ini, tetapi ditunda hingga Oktober karena semua alasan yang diketahui.
Saya akan berbicara tentang pekerjaan saya


Saya tidak ingat ketika saya menarik perhatian ke kontes intro kecil 128 byte, tetapi setiap tahun saya mencoba untuk berpartisipasi. Persiapan untuk kompetisi dilakukan di muka, untuk tahun 2020 rencananya bekerja untuk ZX Spectrum dan Atari XE, tetapi kemudian rencana berubah. Saya akan mulai dengan Apple II:

HiRes Walk




Saya suka komputer ini, sangat menarik karena akan membutuhkan banyak upaya untuk menyelesaikan masalah sederhana. Tugasnya adalah: reproduksi suara, operasi disk, grafik, juru bahasa SWEET-16.
Grafik untuk Apple II adalah dua mode - LoRes dengan resolusi 40x48, 16 warna dan Perekrutan dengan resolusi 280x192 6 warna.

Mempelajari struktur layar akan tampak aneh, mungkin format ini disebabkan oleh fakta bahwa Wozniak, ketika mendesain komputer, disimpan pada semua chip yang tersedia. Berurusan dengan mode teks dan LoRes mudah bagi saya, tetapi mode HiRes adalah jalan buntu. Setiap operasi dengan layar akan memerlukan bagian kode yang tidak akan memungkinkan intro masuk ke dalam ukuran 128 byte. Jadi saya memutuskan untuk curang menggunakan prosedur yang tersediadan coba tanganmu. Idenya sederhana: menggambar garis yang akan meninggalkan bekas.

Siapa pun yang menulis sesuatu yang mirip dengan permainan pong tahu algoritmanya. Untuk intro, Anda memerlukan data X1, dx1, dxe / Y1, dy1, pewarna. X1, Y1 - koordinat saat ini, dx1, dy1 menentukan arah gerakan, dxe, pewarna - mengatur batas koordinat. Dengan kumpulan data ini, Anda dapat menggunakan satu prosedur untuk koordinat (X1, Y1), (X2, Y2), atau untuk garis putih pertama.

Masih membuat jejak. Gagasan muncul dengan sendirinya: Saya menulis sebuah program, menjalankannya 16 kali dengan debugger dan mengambil data siap - sepasang (X3, Y3) dan (X4, Y4) akan berfungsi untuk menggambar garis hitam. Ternyata titik (X1, Y1), (X2, Y2) bergerak di sepanjang lintasan yang diberikan, dan (X3, Y3), (X4, Y4) mengikuti mereka, tetapi dengan penundaan tertentu. Pekerjaan akhir - mentransfer data yang diperlukan ke alamat 0, sehingga ukuran kode disimpan karena pengalamatan halaman nol.

Para perfeksionis akan menggerutu bahwa garis itu tidak menyentuh sudut kanan, tetapi saya akan mendapatkan alasan yang disiapkan. Resolusi layarnya adalah 280 poin, jadi kodenya telah berubah untuk memanipulasi data 16-bit dan intro telah berkembang dari 128 byte menjadi 256 byte.

Halfton




Ini adalah remake dari karya sebelumnya , saya memutuskan untuk mengubah input atribut berdasarkan tekstur. 47 byte meningkat menjadi 128, sisanya ditempati oleh generasi tekstur dan tampilan. Ada satu kelemahan - intro lambat, tetapi Anda tidak bisa melompati 128 byte.

Sparx




Gagasan tentang intro muncul dengan sendirinya, saya memutuskan untuk menulis kode dan melihat apa yang terjadi. Intro dibuat sederhana - mode teks standar dengan pengaturan tambahan digunakan. Atari memiliki mode grafis GTIA yang disebut GRAPHICS 9. Ngomong-ngomong, di BASIC Anda bisa menggunakan mode yang sama. Ini diaktifkan dengan menetapkan bit 6 di lokasi memori GRIOR (alamat 623). Dalam mode ini, byte nibble tinggi dan rendah ditafsirkan sebagai nilai kecerahan warna (0-15) .Sebagai
contoh adalah program,
gambar

hasil kerja
gambar

Dan dalam mode teks, setelah menulis POKE 623.64, layar terlihat seperti ini
gambar

Untuk mode teks, karakter yang terlihat seperti persegi panjang kecerahan 0-15.

Untuk Atari ada pengkodean karakter ATASCII, urutan di atas meja
gambar

Tapi, selain pengkodean, ada juga kode karakter Internal:
gambar

Ketik TurboBasic
POKE DPEEK(88),1
di sudut kiri atas muncul "!"

Penomoran ini digunakan untuk menggambarkan font - 8 byte untuk spasi, 8 byte berikutnya untuk "!". Dalam BASIC, alamat font disimpan di sel 756 (CHBAS), Anda perlu mengalikan nilainya dengan 256. Selain itu, alamat 756 adalah nilai bayangan untuk $ D409.

Font dibentuk untuk mode yang dipilih: 8 nilai $ 00, 7 nilai $ 11..8 nilai $ FF. Kami mendapat karakter dengan kode 0-15 dan dengan kecerahan 0-15.

Algoritme tindakan ternyata sederhana: penyalinan baris demi baris dan menurunkan nilainya sebesar 1 jika kode ditemui yang tidak sama dengan 0.

Smalevi4




Pekerjaan adalah lelucon. Saya membaca artikel Serepindipitous Circles di BYTE Magazine, Agustus 1977, vol.2 N8, dan memutuskan untuk mencoba kode tersebut. Dan lagi, intro kecil 48 byte ternyata. Saya tidak ingin menunjukkan pekerjaan yang sudah jadi, jadi saya mengubah kode dan opsi gambar sehingga gambar yang sama digambar dengan kotak di tengah. Total 128 byte.

Ufff. Jika penyajian prinsip-prinsip intro mengambil waktu sebanyak pekerjaan pada intro? Menghadirkan efek sangat menyenangkan, dan mengoptimalkan kode untuk ukuran juga menyenangkan. Cobalah tangan Anda, bagaimana jika berhasil?

All Articles