3 poin oleh GN⁺ 2023-08-12 | 1 komentar | Bagikan ke WhatsApp
  • OFRAK Tetris adalah game bergaya Tetris di browser dengan instruksi ARM yang jatuh, di mana alih-alih mencocokkan blok, pemain menempatkan instruksi untuk membentuk alur eksekusi program
  • Gadget instruksi yang jatuh akan diputar lalu dikunci, dan hanya instruksi yang berada paling atas di layar dari instruksi yang sudah dikunci yang akan dieksekusi
  • Skor disimpan di alamat memori yang ditunjuk oleh R12, dan status dapat dilacak dengan melihat R0~R12, LR, PC, SP, serta dump memori
  • Jika waktu habis atau terjadi akses memori yang salah maupun lompatan ke alamat yang salah, akan muncul Game over dan eksekusi berakhir
  • Tingkat kesulitan dan cara eksekusi dapat diatur lewat opsi seperti eksekusi langkah tunggal, toggle musik, instruksi logika, mode tak terbatas, interval jatuh, dan ukuran gadget maksimum

Tetris yang berjalan dengan instruksi ARM

  • OFRAK Tetris adalah game bergaya Tetris dengan gadget yang terdiri dari instruksi ARM yang jatuh
  • Pengguna memutar instruksi yang jatuh lalu menguncinya di sisi kiri untuk membentuk alur eksekusi
  • Aturan eksekusi

    • Instruksi jatuh dari atas ke bawah
    • Pengguna memutar dan mengunci instruksi
    • Dari instruksi yang sudah dikunci, hanya instruksi paling atas yang dieksekusi

Status eksekusi yang terlihat di layar

  • Instruksi yang sedang dieksekusi beserta alamatnya ditampilkan bersama
    • Contoh: add PC, PC, #61
    • Contoh: 00010000, 00010004, 00010008
  • Hasil eksekusi dapat dilacak dengan melihat status register dan memori
    • Nilai R0~R12, LR, PC, SP ditampilkan
    • Area memori ditampilkan dalam bentuk alamat heksadesimal dan nilai yang diisi nol
    • Skor ditampilkan seperti Score: 0

Penyimpanan skor dan syarat game berakhir

  • Skor disimpan di alamat memori yang ditunjuk oleh R12
  • Game berakhir jika salah satu dari berikut terjadi
    • Waktu habis
    • Mengakses memori yang salah
    • Melompat ke alamat yang salah
  • Pada layar akhir akan ditampilkan Game over. dan area untuk memasukkan skor tertinggi

Kontrol dan pengaturan

  • Kontrol dasar mencakup eksekusi langkah tunggal, mengunci gadget, memutar register, memutar/menjeda musik, serta menampilkan/menyembunyikan penjelasan
  • Pengaturan key binding gamepad juga disediakan
    • Single Step

    • Toggle Music

    • Lock In

    • Rotate Instructions Up / Down / Left / Right

      • Toggle Game Instructions
      • Di pengaturan game, kondisi eksekusi dan tingkat kesulitan dapat disesuaikan
      • Score multiplier
      • Enable Logical Instructions
      • Infinite mode
      • Seconds between drops
      • Maximum gadget size

Acara di lokasi DEF CON

  • Pengguna yang berada di DEF CON dapat mengunjungi meja Red Balloon Security dan memainkan Tetris bersama di Car Hacking Village
  • Hadiah akan diberikan kepada mereka yang meraih skor cukup tinggi

1 komentar

 
GN⁺ 2023-08-12
Komentar Hacker News
  • Dari sudut pandang programmer yang hampir tidak punya pengalaman mengerjakan assembly, ini alat yang keren untuk belajar
    Saya membuka cheatsheet di tab lain untuk melihat apa yang dilakukan tiap instruksi
    Namun agak mengecewakan karena segfault pertama membuat skor tertinggi saya menjadi -4,8 miliar :-P

  • Keren sekali! Skor tertinggi saya sejauh ini mencapai 65612
    Sebagai masukan, saat membuka menu bantuan, cara menutupnya tidak jelas; sepertinya hanya bisa dengan menekan ? lagi
    Saya suka musik Goblin-nya, juga antarmuka dan pewarnaannya yang bagus untuk bereksperimen dengan instruksi
    Kalau ada mode sandbox yang memungkinkan kita melihat pratinjau efek eksekusi instruksi dan mengubah program setelah permainan selesai, itu sepertinya akan sangat berguna bagi orang yang belajar assembly ARM

    • Saya suka ide mode sandbox itu
      Setelah bermain beberapa jam sambil membuat game ini, kecepatan saya membaca assembly ARM jelas jadi lebih cepat
  • Saya tidak bisa menahan tawa saat membaca “skor disimpan di memori pada alamat yang ditunjuk oleh R12”
    Terima kasih sudah membagikannya, jadi rindu DEFCON. Sepertinya baru bisa pergi tahun depan

    • Bisa jelaskan kenapa R12 membuatmu tertawa?
    • Sebagai orang yang hampir tidak tahu apa itu instruksi atau alamat, saya penasaran apa maksud “skor disimpan di memori pada alamat yang ditunjuk oleh R12”
      Halamannya sudah saya buka sebelum balasan masuk, jadi saya tidak melihat jawabannya sampai melakukan refresh
  • Ada dua strategi bagus yang sejauh ini saya gunakan
    Pertama, menyebarkan PC ke sebanyak mungkin register, menjumlahkan register-register itu sebanyak mungkin, lalu menyimpan totalnya ke alamat 0 atau lokasi skor
    Kedua, membaca instruksi yang dirakit dari nilai PC lama sebagai integer ke register; karena biasanya terlihat negatif, buat menjadi tidak negatif dengan pengurangan, lalu simpan ke lokasi skor
    Penasaran strategi apa saja yang dicoba orang lain

  • Konsepnya benar-benar keren, tapi pemahaman assembly saya terlalu rendah :)
    Katanya skor disimpan di R12, tapi R12 bernilai 0; saya tidak paham kenapa skornya 16
    https://imgur.com/a/RY5jhTu

    • R12 berisi alamat skor
      Dalam kasus ini, alamatnya 0, yaitu awal segmen data
      Register skor berwarna kuning, dan area memori yang ditunjuk register itu—yakni byte skor sebenarnya—juga ditandai kuning
  • Saya terbiasa dengan komputer dan sedikit tahu assembly dasar, tapi wah, yang ini sama sekali tidak saya pahami

    • Kalau ada hal spesifik yang ingin ditanyakan, saya bisa menjelaskannya
      Secara lebih luas, saya juga ingin tahu pendapat tentang cara membuat game ini lebih jelas
      Saya tahu manual yang menjelaskan instruksi akan membantu, tapi ide lain juga diterima
  • UI/UX brutalisme yang indah

  • Sebelum mencobanya, saya menekan “About” lalu halaman baru terbuka dan menampilkan ini: “Dengan terus menggunakan situs ini, Anda menyetujui penggunaan cookie”
    Ini terlihat seperti pelanggaran GDPR. Menolak cookie harus semudah menyetujuinya
    Apalagi cookie-cookie ini tampaknya tidak diperlukan agar situs berfungsi
    “Layanan menggunakan cookie dan teknologi serupa seperti tag piksel, web beacon, clear GIF, JavaScript untuk memungkinkan server mengenali peramban web Anda, mengetahui waktu kunjungan dan penggunaan, menganalisis tren, memahami basis pengguna, serta mengoperasikan dan meningkatkan Layanan … Kami juga dapat melengkapi informasi yang kami kumpulkan dengan informasi yang diterima dari pihak ketiga, termasuk cookie yang ditempatkan di perangkat Anda oleh pihak ketiga”
    https://ofrak.com/privacy/#tracking-tools-and-opt-out
    Menyuruh pengguna menghapus cookie lewat pengaturan browser di bagian bawah halaman bukan solusi yang dapat diterima

    • Sayangnya, praktik seperti ini terjadi di banyak situs web, dan banyak perusahaan tidak benar-benar mematuhi undang-undang cookie
      https://www.cnil.fr/en/refusing-cookies-should-be-easy-accep...
    • Di sisi saya, yang disimpan hanya pengaturan game, tidak ada yang ilegal; saya tidak tahu kenapa banner itu muncul
    • Cara memberi tahu pengunjung situs agar menonaktifkan cookie di browser persis juga digunakan oleh apple.com
  • Saya penasaran bagaimana cara build game ini
    Saya sudah melihat https://ofrak.com/docs/environment-setup.html, tetapi tidak menemukan detail spesifik tentang game Tetris
    Mungkin saya melewatkannya

  • Saya benar-benar suka konsepnya
    Kunci untuk mendapat skor tinggi tampaknya adalah menulis 0 ke PC
    Karena kode biner instruksi baru “ditambahkan” ke area memori yang terlihat di kanan, lalu setelah itu R12 bisa dimanipulasi untuk memaksimalkan skor

    • Kunci lainnya adalah mengubah R12 menjadi nilai yang tidak habis dibagi 4
      Karena semua instruksi berukuran 4 byte dan bit paling signifikan selalu 1
      Beberapa kali saya mencapai sekitar 2 miliar, tapi rata-ratanya cukup rendah ;)