Di bagian pertama artikel, kami mengurutkan bootloader dari versi asli dan menemukan di mana kode permainan dimuat dan bagaimana itu dimulai. Sekarang Anda perlu mentransfer file ke disk.

Ini biasanya dilakukan hanya dengan menyalin file, tetapi ada satu masalah. Faktanya adalah bahwa file asli berisi gambar dan kode permainan dalam keseluruhan dan karenanya, menimpa area variabel dasar dan sistem, yang terletak tepat di belakang area layar. File seperti itu dapat diunduh dari tape, tetapi tidak dapat diunduh dari floppy disk. TR-DOS menyimpan area memori tertentu untuk kebutuhan Anda, dan jika Anda memuat data di sana, semuanya akan rusak selama proses pengunduhan.
Untungnya, kami memiliki cukup memori yang tidak ditempati oleh permainan. Karena itu, gim dapat diunduh ke tempat lain, dan di akhir unduhan pindah ke tempat yang Anda inginkan dan jalankan. Dalam hal ini, saya ingin menampilkan gambar sebelum akhir pengunduhan - untuk itu juga dapat di-boot. Untuk melakukan ini, kami akan memotong file monolitik menjadi data area dua layar dan data game:
$ head -c 6912 headless.bin > screen.bin $ tail -c +6913 headless.bin > data.bin
File data game akan segera menerjemahkan format hobeta. Nanti kita akan membutuhkannya untuk merekam dalam gambar akhir. Untuk mengonversi format, kita akan menggunakan zxspectrum-utils dan trd2hob
:
$ binto0 data.bin 3 $ 0tohob data.000 # data.$C

Sedangkan untuk layar boot, belanjakan 6,75 kB untuk gambar sederhana - sia-sia. Itu dapat dikompres dengan benar dengan kompresor layar, misalnya, Laser Compact 5.2 . Untuk melakukan ini, Anda harus terlebih dahulu menulis file gambar ke gambar disket sementara:
$ binto0 screen.bin 3 $ 0tohob screen.000 $ createtrd tmp.trd $ hobeta2trd screen.\$C tmp.trd
Setelah itu, jalankan Laser Compact di emulator dan simpan gambar yang dikompresi ke disket yang sama (Paket layar → Simpan dengan depacker). Saat menyimpan, tentukan screenz.C
file screenz.C
. Selanjutnya, Anda perlu menyalin gambar yang dikompresi dari gambar floppy disk kembali ke disk. Sayangnya, saya tidak dapat menemukan sumber untuk trd2hob
mana saja, jadi saya harus menjalankan dos binary dari bawah DosBox:
$ dosbox -c "mount C $PWD" -c "C:" -c "trd2hob.exe screen.trd" -c exit
Sebagai hasilnya, kami mendapatkan file hobeta dari form screenz.$
dengan gambar terkompresi.
Selain utilitas Spectrum asli untuk kompresi layar, ada utilitas untuk PC, misalnya, zx7b
dan zxsc
. Meskipun lebih nyaman untuk mengotomatisasi bekerja dengan mereka, keduanya memiliki kelemahan sebelum Laser Compact:
- Keduanya kalah dalam kualitas kompresi.
- Saat membongkar gambar, artefak tertentu terlihat ketika, saat Laser Compact mengisi area atribut layar hampir secara instan.
zx7b
tidak mendukung pembuatan arsip self-extracting - Anda juga harus mengkompilasi dekompresor.
Akhirnya, kami mencari tahu ukuran file terkompresi. Kita akan membutuhkannya nanti untuk menulis bootloader.
$ lstrd tmp.trd 80 Tracks, Double Side, capacity 640kB Number of files/deleted: 2/0 Free sectors/bytes: 2509/642304 First free sector/track: 3/3 FILENAME TYPE SECTORS ADDRESS LENGTH TRACK SECTOR -------------------------------------------------------------- screen <C> CODE (BYTES) 27 16384 6912 1 0 screenz <C> CODE (BYTES) 8 40000 1812 2 11
Seperti yang Anda lihat, file dikompresi lebih dari tiga kali lipat dan menempati 8 sektor pada disk.
Di bagian selanjutnya, kita akan langsung menuju bootloader.
Tautan terkait:
- "Adaptasi program ke sistem TR-DOS" oleh Nikolai Rodionov.