Bagaimana Anda dapat menyetel NES RNG ke status yang diketahui?

Dec 23 2020

The Klasik Tetris World Championship menggunakan NES konsol asli yang modded untuk memberikan Ping yang sama untuk kedua pemain:

Pemain AKAN memiliki RNG yang sama

Saya bertanya-tanya bagaimana ini dilakukan. Jadi, pertanyaan saya ada dua:

  1. Benih acak apa yang digunakan oleh SEN?
  2. Bagaimana benih ini dapat dimanipulasi?

Jawaban

6 Tommy Feb 11 2021 at 02:26

Community Wiki, karena tidak jelas bagi saya mengapa @JaapJorisVens menghapus jawabannya karena tampaknya mengandung petunjuk yang diperlukan:

Gerobak adalah gerobak khusus yang kami buat yang berisi 1000 permainan yang dapat dipilih. Perlu disebutkan bahwa gerobak sebenarnya adalah adaptor - pada dasarnya Game Genies - yang tidak melakukan apa-apa kecuali Anda memasang gerobak Tetris NES asli.

Masing-masing dari 1000 game sesuai dengan seed acak unik yang menginisialisasi RNG untuk setiap game. Benih diulangi sekali per potong untuk menghasilkan urutannya. ...

Bagian dari algoritme RNG di gerobak menggunakan tabel yang cukup besar ... Setiap tahun kami mengocok isi tabel ini untuk membuat gerobak baru.

Begitu:

  • Tetris asli digunakan;
  • kartrid khusus kompetisi bertindak sebagai passthrough untuk menggantikan generator nomor acak Tetris; dan
  • secara khusus, perangkat passthrough itu melihat ketika Tetris melakukan urutan potongan barunya dan pada saat itu memasukkan nomor acak berikutnya.

NES itu sendiri tidak secara inheren menghasilkan angka acak, itu adalah proses per game, yang diterapkan bagaimanapun juga setiap game. Untuk tujuan kompetisi ini, mereka telah merekayasa perantara yang menggantikan nomor acaknya sendiri, membuatnya tepat sesuai permintaan.

Per bagian lain dari jawaban Jaap:

Matematika yang terlibat dalam 'iterasi' benih cukup rinci, yang melibatkan LFSR (seperti yang digunakan dalam keranjang NES standar), beberapa penghitung perulangan, dan beberapa tabel pencarian. Tepat sebelum setiap permainan, nomor acak antara 0 dan 999 dipilih dan pemain diberi tahu permainan mana yang harus dipilih di kereta. Setelah permainan dimainkan, itu tidak pernah dimainkan kembali.

Jadi baik implementasi baru dan yang asli adalah register geser umpan balik linier ('LFSR's), yang merupakan register geser di mana bit yang keluar adalah ORd eksklusif ke beberapa kombinasi bit lain dalam keadaan saat ini. Melalui itu berarti register n- bit dapat melakukan iterasi melalui 2 n  - 1 status dalam urutan tetap yang cukup miring sehingga manusia dapat menafsirkannya sebagai acak.

Yang mengatakan, sepertinya perangkat passthrough melangkah lebih jauh dalam menggunakan LFSR untuk mengindeks tabel nomor acak, jadi kemungkinan LFSR digunakan hanya karena lebih mudah untuk disatukan daripada penghitung riak klasik.

Sangat mungkin yang asli hanya menggunakan output dari perangkat lunaknya LFSR secara langsung.