1 poin oleh GN⁺ 2024-11-23 | 1 komentar | Bagikan ke WhatsApp
  • ChipWits, salah satu game awal Macintosh tahun 1984, merayakan ulang tahun ke-40 dengan merilis kode sumber FORTH asli untuk Mac dan Commodore 64 sebagai open source
  • Tujuan rilis ini adalah melestarikan warisan game tersebut dan membagikan bagaimana pengembangan lintas platform dilakukan pada mikrokomputer 8-bit tahun 1984
  • Data dipulihkan dari disk berusia 40 tahun yang disimpan Doug Sharp; meski ada beberapa sektor rusak, sebagian besar disk berhasil dibaca dengan normal
  • Seluruh source versi Mac berjumlah sekitar 3.000 baris FORTH, sementara port modernnya mencapai 35.000 baris C#, menunjukkan kepadatan kode dan keterbatasan pada masa itu
  • Proyek ini merilis image disk asli dan kode yang diekstrak di GitHub, serta ingin bekerja bersama komunitas untuk mengidentifikasi source terbaru, menulis cara build, dan mengekstrak sprite

Kode asli ChipWits dirilis

  • Untuk memperingati ulang tahun ke-40 ChipWits, kode sumber FORTH asli untuk Mac dan Commodore 64 dirilis sebagai open source
  • Kode asli yang dipulihkan dan image disk disusun di chipwits/chipwits-forth
  • Tujuan rilis ini adalah melestarikan warisan ChipWits dan membagikan pengalaman pengembangan lintas platform untuk mikrokomputer 8-bit pada 1984
  • Orang-orang yang akrab dengan sistem asli dapat ikut menelusuri dan merapikan source; proyek ini meminta kolaborasi melalui ChipWits Discord Server

Alasan memilih FORTH pada 1984

  • ChipWits adalah salah satu game awal yang dirilis untuk Macintosh pada 1984
  • Ko-kreator Doug Sharp dan Mike Johnston merancang game orisinal pertama mereka, ChipWits, sambil mem-porting game edukasi di antara mikrokomputer 8-bit
  • Game ini adalah game pemrograman robot yang dipengaruhi game pemrograman pada masa itu seperti Rocky’s Boots dan Logo
  • Lingkungan pengembangan Mac pada 1984 terbatas, dan cara utama untuk mengembangkan adalah membeli Apple Lisa
    • Harga asli Apple Lisa adalah $9.995, setara $30.373 dalam nilai saat ini
    • Karena biaya itu sulit ditanggung studio game indie, Doug dan Mike mengembangkan dengan MacForth Plus yang berjalan langsung di Mac
  • Saat itu ada berbagai varian FORTH untuk beberapa mikrokomputer 8-bit, sehingga pilihan bahasa ini cocok dengan rencana porting berikutnya
  • Pengembangan dimulai pada April 1984, dan dibutuhkan sekitar 7 bulan hingga versi pertama selesai dikembangkan dan diterbitkan, tepat untuk musim Natal

Porting ke Commodore 64 dan Apple II

  • Epyx direncanakan menjadi penerbit ChipWits, dan Commodore 64 adalah pasar terbesar
  • Epyx tidak memiliki game Mac, sementara Brainworks menargetkan pasar pendidikan yang saat itu kuat dikuasai Apple, sehingga Epyx hanya menerbitkan versi Commodore 64
  • Port C64 selesai pada 1985 dan ditulis dengan Super Forth 64
  • Porting ke Commodore 64 menantang karena harus mempertahankan desain UI keseluruhan yang sama seperti Mac
    • Mereka harus mengembangkan sistem menu pull-down yang beroperasi dengan joystick, bukan mouse
    • Menambahkan grafis berwarna dan suara chip SID
    • Harus memasukkan semuanya ke disk 165KB, bukan disk Mac 400KB
    • Harus menggunakan RAM 64KB dan prosesor yang lebih lambat, bukan RAM 128KB milik Mac
  • Setelah versi Commodore 64 sukses, versi Apple II juga dibuat, dan juga ditulis dengan varian FORTH

Penilaian setelah rilis dan menjalankan versi asli

  • Setelah dirilis, ChipWits menerima berbagai ulasan dan penghargaan
  • MacUser Editor’s Choice 1986 Award menilai ChipWits sebagai “pengantar konsep pemrograman yang paling menyenangkan”, serta memuji bahasa berbasis ikon dan desain edukatifnya
  • Macazine memperkirakan ChipWits akan menjadi karya cult favorite di kalangan pengguna Macintosh dan anak-anak
  • MacWorld menilai bahwa jika Anda menyukai pemrograman, Anda akan menyukai ChipWits
  • Creative Computing meninggalkan ulasan yang menggambarkan adegan memaki robot kartun pada pukul 4.30 pagi
  • Pada 2008, Maclife.com memilih ChipWits sebagai salah satu Top 10 Apple II / Mac Games sepanjang masa
  • Versi asli disiapkan agar dapat berjalan di emulator browser melalui proyek open source Emularity dan Apple2js

Memulihkan disk berusia 40 tahun

  • Saat mengerjakan versi baru ChipWits, Doug Sharp menemukan disk asli yang ia simpan
  • Disket 3,5 inci dan floppy disk 5,25 inci telah disimpan di rumah selama 40 tahun, tetapi sebagian besar disk dapat dibaca tanpa sektor rusak
  • Untuk pemulihan disk Commodore 64 digunakan 1541 Commodore 64 Disk Drive yang dibeli di eBay
    • Data dibaca di PC modern melalui adaptor USB XoomFloppy
  • Disket Mac 3,5 inci tidak dapat dibaca dengan cara standar drive modern karena susunan sektor khas Mac
    • Mac menggunakan layout sektor khusus untuk meningkatkan kapasitas disk hingga 800KB
    • PowerMac G3 WallStreet memiliki drive 3,5 inci dan stack jaringan sehingga dipakai sebagai sistem jembatan, tetapi dukungan 400KB dinonaktifkan di MacOS yang lebih baru, sehingga hanya disk 800KB yang dapat dibaca
    • Kemudian, atas saran seorang penggemar, mereka menggunakan GreaseWeazle, controller hardware kustom untuk mengendalikan USB disk drive, dan metode ini berjalan dengan baik
  • Semua disk dibuat menjadi image per blok lalu disusun di repositori GitHub
    • Nama file menggunakan label disk
    • Jika terdeteksi sektor rusak, awalan bad ditambahkan ke nama file
    • Agar mudah dibaca di komputer modern, blok diekstrak dengan skrip Python dan diformat ulang menjadi file ASCII UTF-8
    • PETSCII, encoding karakter khas Commodore 64, dikonversi ke ASCII

Cara pengembangan yang terlihat dari source FORTH

  • Seluruh image disk dan kode asli dapat dilihat di chipwits/chipwits-forth
  • Seluruh source ChipWits untuk Mac berjumlah sekitar 3.000 baris FORTH
  • Port modernnya sudah mencapai 35.000 baris C#, sehingga kepadatan kode FORTH asli terlihat menonjol
  • Tulisan terpisah Forth Code for Electrocrabs in 1984 ChipWits Deciphered menganalisis satu “screen” kode FORTH yang mengendalikan electrocrabs
  • FORTH adalah bahasa berbasis stack dan mirip dengan Reverse Polish Notation
    • Alih-alih 1 + 1, bentuknya ditulis 1 1 +
    • Alih-alih if random(3) == 1, bentuk yang digunakan adalah 3 irnd 1 = if

Implementasi game 1984 dilihat dari contoh kode

  • Kode pergerakan robot pada versi Mac tidak memisahkan loop rendering per frame seperti pengembangan game modern
    • Logika game dan rendering grafis tercampur di dalam kode imperatif
    • Animasi diimplementasikan dengan merender piksel secara langsung di dalam loop
    • Perpindahan ke tile lantai kosong, menabrak dinding, atau menyentuh bom ditangani dengan beberapa kata kode saja
    • Definisi ?boom bahkan menentukan apakah game berakhir saat menyentuh bom
    • Bergantung pada posisi robot, 0 ditambahkan ke skor untuk memaksa tampilan skor digambar ulang, karena mungkin terhapus saat robot lewat
  • Definisi sprite pada versi Commodore 64 menunjukkan bagaimana kode dan data aset tercampur
    • Source FORTH tidak disimpan sebagai file, melainkan dalam unit screen bernomor, lalu dimuat sesuai urutan yang diperlukan
    • Sprite hitam-putih C64 berukuran 24×21 piksel, dan hanya 8 sprite yang dapat digunakan di satu layar
    • Jika memilih sprite 4 warna, resolusinya turun menjadi 12×21 dan pikselnya menjadi dua kali lebih lebar
    • Karakter ChipWit dirender dengan menumpuk beberapa sprite, mirip animasi sel dalam kartun vintage
    • Pilihan ini menggunakan banyak sprite yang tersedia untuk ChipWit, tetapi memungkinkan gambar lebih tajam dan animasi per bagian
  • Tabel skor item pada versi Mac dipadatkan agar muat dalam satu screen
    • Notasi seperti ( 110584 dws) adalah stempel tanggal screen; 110584 berarti 5 November 1984, dan dws berarti Douglass Walter Sharp
    • Screen tersebut tampaknya merupakan salah satu screen terakhir yang diubah sebelum rilis final; screen terakhir yang berubah bertanggal 8 November
    • d, didefinisikan untuk menyimpan nilai setelah dikalikan 10, sehingga 150 poin dapat ditulis seperti 15 d
    • Metode ini membantu menjaga perataan tabel sambil membuatnya muat dalam satu screen, dan kemungkinan memudahkan penyesuaian nilai skor keseluruhan saat balancing sebelum rilis

Reboot dan kerja komunitas

  • Selain merilis versi FORTH asli, tim juga sedang mengerjakan ChipWits yang dimodernisasi
  • Versi reboot berupaya mempertahankan keseruan dan ketelitian ilmu komputer dari karya asli, sekaligus meningkatkan berbagai aspek dari kurva belajar hingga leaderboard global kompetitif
  • Dengan menambahkan ChipWits ke wishlist di Steam, Anda dapat menerima notifikasi saat versi final dirilis
  • Sasaran langsung dari issue GitHub saat ini terkait kode FORTH asli adalah sebagai berikut
    • Memastikan semua source code terkait telah diekstrak dari raw disk image
    • Memperbaiki masalah perataan di sebagian file source
      • Sebagian lebarnya 40 karakter, sebagian 64 karakter
    • Menentukan disk mana yang berisi source code paling baru
    • Menulis cara build dari source di Mac dan C64
    • Mengekstrak raw sprite dan gambar dari disk lalu mengonversinya menjadi file .png
  • Tujuan akhirnya adalah ChipWits versi FORTH yang dipelihara komunitas untuk PC modern

1 komentar

 
GN⁺ 2024-11-23
Komentar Hacker News
  • Ada tulisan yang menjelaskan alasan ChipWits dibuat dengan FORTH pada 1984
    https://chipwits.com/2023/04/08/forth-programming-language-g...

    • ChipWits adalah salah satu game pertama yang saya mainkan pada 1984 di Apple Macintosh, komputer pertama saya saat berusia 6 tahun
      Terima kasih sudah membuat game yang saya sukai, saya juga sudah mengunduh demo barunya dan menambahkannya ke wishlist Steam saya
  • Forth adalah bahasa yang sudah beberapa tahun ingin saya pelajari
    Di komputer lama, pilihannya adalah memakai bahasa assembly jika ingin program cepat, atau BASIC jika tidak masalah lambat, dan menarik bahwa Forth terlihat cukup tingkat tinggi tetapi tetap seperti bahasa dengan “kecepatan menengah”

    • Forth sudah lama menjadi bahasa standar bersama C untuk pengembangan hardware dan driver, dan sampai sekarang masih dipakai di banyak tempat
      Ini adalah bahasa berbasis stack
      https://www.forth.com/starting-forth/
    • Anda bisa membeli komputer papan tunggal yang menjalankan Forth secara native
      Cukup colokkan kabel USB ke komputer dan buka program terminal, lalu Anda bisa langsung mulai, jadi sangat cocok untuk benar-benar tenggelam dalam bahasanya
      Namun, produk yang dikirim dari Australia bisa memerlukan waktu beberapa bulan untuk tiba, jadi sebaiknya cari pemasok yang lebih dekat terlebih dahulu
      Cara bagus lainnya adalah belajar seperti pada 1984. Jalankan emulator seperti Commodore 64 atau Apple ][ di komputer modern, lalu pasang lingkungan pengembangan Forth di dalamnya
      Dokumentasi pada masa itu ditulis untuk pemula total, jadi sangat mudah diikuti, dan ada banyak PDF hasil pemindaian gratis di internet
    • Menurut saya, membuat interpreter Forth mainan sendiri adalah cara yang bagus untuk mempelajari bahasanya
      Ini mudah dan menyenangkan, tetapi sampai titik tertentu terlalu tidak masuk akal mudahnya, sehingga bagi sebagian orang bisa terasa terlalu dasar, atau godaan untuk melampaui implementasi mainan menjadi sangat besar
    • Forth sangat cepat, bahkan bisa lebih cepat daripada bahasa assembly yang ditulis secara naif, tetapi sama sekali bukan bahasa tingkat tinggi
      Anda harus mengelola stack secara langsung, jadi cukup merepotkan, dan membuat FORTH sendiri itu menyenangkan. Tidak harus dibuat dengan bahasa assembly; saya juga pernah membuat bahasa skrip mirip Forth dengan C++
    • Komputer rumahan 8-bit lama dirancang dengan mempertimbangkan remaja dan anak-anak, dan mungkin juga dipengaruhi oleh Alan Kay
      BASIC cocok untuk itu karena berarti “Beginner's All-purpose Symbolic Instruction Code”
      Amstrad CPC 6128 juga menyediakan implementasi Logo, dialek Lisp untuk pendidikan, dalam disk terpisah, dan linked list di dalamnya benar-benar mengejutkan saya saat kecil
      Pada masa itu, “open source” belum menjadi konsep umum, dan compiler serta interpreter untuk berbagai bahasa adalah alat komersial yang bersifat profesional
      [1] https://en.wikipedia.org/wiki/Amstrad_CPC#Other_languages
      [2] https://en.wikipedia.org/wiki/An_Open_Letter_to_Hobbyists
  • Kelihatan sangat keren
    Terkait itu, ada juga http://tumbleforth.hardcoded.net/, dan menurut saya tampilannya cukup bagus. Kalau ada yang pernah menamatkannya, saya penasaran seperti apa pengalamannya

    • Saya sempat menyelesaikan sekitar setengahnya pada minggu saat pekerjaan sedang santai, dan itu mengingatkan saya pada kelas perangkat keras waktu kuliah
      Itu membuat saya memikirkan komputasi dengan cara yang berbeda
      Saya masih muda dan masih kurang pengalaman, tetapi kalau melihat ke belakang, dulu abstraksi tertentu dipilih karena keterbatasan perangkat keras, dan pada “cabang evolusi” bahasa pemrograman saat ini tampaknya menumpuk banyak abstraksi yang tidak menua dengan baik, sehingga ada banyak lapisan barang campuran yang menopang bebannya. Mirip dengan proyek rekayasa lainnya
      Collapse OS mungkin tidak praktis untuk masa kini, tetapi ada rasa kebebasan saat melepaskan diri dari berbagai lapisan abstraksi. Rasanya seperti cara menikmati komputasi ala 1960-an tanpa pengalaman pengembang yang mengerikan
      Proyek muluk saya saat ini adalah mengikuti hal-hal seperti ini, membangun Dusk OS di mesin virtual, lalu memindahkannya ke mesin fisik, kemudian menulis interpreter Scheme untuk Dusk OS dalam C dan setelah itu mengembangkannya sebebas mungkin
      Masih ada beberapa rintangan besar yang harus dilewati sebelum sampai ke sana. Saya membuat interpreter Scheme dalam Python hanya dalam beberapa jam, lalu menghabiskan beberapa jam lagi untuk memperbaiki scanner/tokenizer. Sekarang saya sedang membaca Crafting Interpreters untuk melihat bagaimana seharusnya mengimplementasikan interpreter Scheme dalam C. Setelah interpreter C itu jadi, saya berencana melihat lagi panduan ini dan terjun langsung ke DuskOS
    • Baru mulai melihatnya, terima kasih sudah membagikannya
      Saya sudah suka dengan gaya bahasa penulisnya
      Contohnya:

      Much terser than the C version right?
      This little assembler crash course gives us a better understanding of what is compiled by the C compiler, but not how it compiles it. We don't know how it's ran either. To know that, we'd have to dig through software that weighs millions of lines of code. Maybe you'd have the patience to do it, I don't, so let's continue tumbling down the rabbit hole. We'll go bare metal and then build an operating system of our own, with a C compiler of our own. It's simpler this way.
      What’s a linker? Aw, forget about it, it’s another piece of overcomplicated software that has convinced the world that it’s essential. We won’t need one in what’s coming.

    • Penulis seri Tumble Forth, Virgil Dupras, juga sedang membuat DuskOS, sebuah sistem operasi yang seluruhnya ditulis dengan Forth kustom
      Konsistensi dan hasil kerjanya yang luar biasa sangat mengesankan. Saya tidak sepenuhnya setuju dengan filosofi Collapse, tetapi mailing list DuskOS punya tingkat lalu lintas yang pas untuk sekadar diikuti diam-diam
      Setelah melihat karya Virgil, saya sempat mencoba Forth sedikit, dan tahun lalu saya menghabiskan waktu untuk melakukan dekompilasi balik SmithForth[1] secara manual
      Mengejutkan betapa sedikit assembly yang dibutuhkan untuk melakukan bootstrap sebuah bahasa. Jadi sangat masuk akal bahwa Forth bisa menyediakan REPL di lingkungan embedded, dan itu tampak jauh lebih menyenangkan daripada siklus pengembangan umum yang sering kita dengar
      [0]:https://duskos.org/
      [1]:https://dacvs.neocities.org/SF/
    • Awalnya ini hanyalah reaksi karena bersemangat melihat sesuatu yang benar-benar berbasis Forth
      Setelah itu saya membaca halaman Wikipedia dan tulisan blog tentang ChipWits, dan game aslinya terlihat sangat keren. Logo di manual Wikipedia-nya juga sangat bagus
      Belakangan saya sedang membuat daftar game lama/baru yang punya elemen puzzle dan pemrograman, dan saya akan memasukkan ini ke sana. Bahkan mungkin saya akan langsung mencobanya setelah menamatkan “game” assembly ketman. Sebenarnya itu agak sulit disebut game
      Semoga ChipWits yang baru sukses besar
  • ValForth buatan Valpar adalah salah satu implementasi FORTH lintas platform awal di ekosistem Atari ST, dan juga memiliki ekstensi cerdas untuk game
    https://www.atarimagazines.com/rom/issue1/jumping_forth.php
    Seperti disebut dalam artikelnya, di 8-bit juga ada FORTH dari Elcomp, dan ada juga buku seperti https://www.atarimania.com/documents/FORTH-on-the-Atari-Lear.... “Starting FORTH” karya Leo Brodie masih merupakan buku pengantar yang sangat baik hingga sekarang
    Semua orang memang belajar BASIC, tetapi bahasa-bahasa alternatif seperti ini menunjukkan bahwa benar-benar ada metafora yang sepenuhnya berbeda untuk memprogram perangkat
    Bagi anak-anak era 80-an, itu benar-benar membuka wawasan

  • Forth tampak seperti salah satu bahasa yang sulit dibaca setelah sekali ditulis, mirip Perl
    Menulis dan membuatnya mudah, tetapi kalau kembali ke kodenya sekitar setahun kemudian rasanya tidak akan tahu itu melakukan apa
    Meski begitu, bahasa ini benar-benar cepat dan efisien

    • Menurut saya reputasi seperti itu untuk Perl sama sekali tidak adil
      Saya baru saja membuka secara acak sebuah program Perl yang cukup besar dan tidak saya sentuh selama lebih dari 3 tahun, lalu menelusuri source-nya, dan sama sekali tidak kesulitan memahami apa yang dilakukannya
      Saya tidak merasa kode Perl lebih sulit dibaca ulang dibanding kebanyakan bahasa pemrograman lain. Kesulitannya terutama bergantung pada seberapa mahir pengembang terhadap bahasa tersebut, dan sudah berapa lama sejak terakhir kali menulis kode dengan bahasa itu
      Kalau kemampuan bahasanya sudah banyak berkarat, atau dari awal memang belum terlalu mahir, maka dalam bahasa apa pun akan sulit melihat kembali kode lama
      Tentu akan lebih sulit kalau itu bukan kode sendiri, dan seberapa baik kodenya ditulis juga sangat berpengaruh. Di bahasa apa pun ada banyak kode sampah, dan kalau dari awal memang sampah, seiring waktu juga tidak akan menjadi lebih baik
    • Secara pribadi saya justru merasa sebaliknya
      Forth sulit ditulis, tetapi mudah dibaca
  • Dulu waktu kecil saya sering memainkannya di Commodore 64
    Itu game yang unik, menarik, dan menyenangkan

    • Di game baru ini, gameplay dari versi aslinya dipertahankan hampir sepenuhnya
      Saya tidak ingin spam di Hacker News, tetapi kalau Anda pernah memainkan versi aslinya, saya benar-benar ingin mendengar tanggapan Anda tentang reboot ini: https://chipwits.com
  • Waktu kecil saya benar-benar sangat ingin memiliki game ini
    Rasanya saya memang sudah tua sekali

  • Saya penasaran modern ChipWits ditulis dengan apa

    • Menurut artikelnya, ini dibuat dengan C#, dan jumlah kodenya setidaknya 10 kali lebih banyak
      Saya sangat menyukai game ini. Saya juga punya paket Forth untuk C64, tetapi tidak pernah terpikir untuk menghubungkan bahwa game ini dibuat dengannya
    • Unity dan C#
  • Saya membeli Human Resource Machine dan sebagian besar menikmatinya. Sampai sebelum menjadi terlalu sulit
    Ini tampak seperti konsep yang sama dengan ChipWits, yaitu membuat pemrograman berbasis stack menjadi sebuah game
    Kalau ada yang pernah memainkan keduanya, saya penasaran bagaimana perbandingannya