I. Tiền đề

Giới  Gaming ngày nay hay nhắc đến thuật ngữ "fps" (frame per second) hay còn  gọi là "frame rate". Đây là một tiêu chí quan trọng để đánh giá độ mượt  hiển thị của game. Vì có khá nhiều bài giải thích chi tiết về fps trên  Internet nên ở đây không đề cập đến, mà chỉ nói một cách nôm na đó là số  lượng khung hình được cập nhật mới trong 1 giây hiển thị. Điều này liên  quan tới tính chất lưu ảnh trên võng mạc của mắt người.
Năm  1829, nhà vật lý Joseph Plateau phát hiện ra rằng dù "thực tượng" đã  không còn tồn tại ngay khoảnh khắc đó nữa, nhưng trong khoảng 0.1 giây  thì mắt người vẫn còn nhìn thấy hình ảnh của "thực tượng" đó. Phát hiện  này được ứng dụng trong điện ảnh, làm phim hoạt hình, làm TV, làm  game,...
Trong  điện ảnh, sau 0.04 giây (hay 1/24 giây) thì người ta cập nhật một hình  ảnh mới. Do vậy ta hay nghe nói cụm từ "24 hình/giây" trong phim ảnh, và  dù cả cuốn phim chỉ là một tập hợp những khung hình rời rạc, nhưng  trong mắt người thì đó là những chuyển động liên tục.

Nguyên tắc của phim hoạt hình, lợi dụng tính lưu ảnh của mắt

II. Nhìn về cách hiển thị hình ảnh của hệ máy game cổ

Ngày  nay, khi đánh giá độ mượt của một game, lựa chọn TV, người ta hay nói  nhiều đến yếu tố fps/tần số quét của màn hình, mặc dù mắt người là một  sinh thể phức tạp, cảm giác mượt phụ thuộc vào nhiều yếu tố khác nhau  của từng cá nhân. Tựu trung, tần số càng cao thì càng dễ cho cảm giác  hình ảnh mượt mà. Tốc độ khung hình lý tưởng hiện nay trong giới Gaming  là 60 fps, và trong những giai đoạn trước đó là 30 fps, 24 fps. Dù vậy,  khá nhiều tựa game cho máy chơi game đương đại như Sony PlayStation 4  cũng không chạy ở mức lý tưởng là 60 fps. Vậy còn những máy chơi game  thời kỳ đầu như NES/SNES thì sao?
Mặc  dù ra đời vào năm 1990, so với công nghệ đương đại thì SNES là chiếc  máy cổ lổ, nhưng về lý thuyết thì nó vẫn có khả năng hiển thị hình ảnh  60 fps. Máy SNES được thiết kế để hiển thị hình ảnh trên màn hình Tivi  CRT (Cathod Ray Tube /ống tia âm cực) và hầu hết Tivi CRT chỉ cập nhật  được hình ảnh ở tần số 30 fps nên thực tế là hầu hết game cổ, bao gồm cả  SNES, đều chỉ chạy ở 30 fps trở xuống. Tuy vậy thì đối với các game 2D ở  các thế hệ máy chơi game đời kỳ đầu thì chỉ số fps không mấy quan  trọng. Lý do cũng là do nguyên nhân kỹ thuật như đề cập dưới đây.
Hình ảnh  nguyên khối mà ta thấy trên màn hình, thực chất chỉ là những điểm ảnh  rời rạc được "tô" theo từng tia quét (scanline). Độ phân giải chuẩn của  game SNES hệ NTSC là 256x224, tức 256 điểm ảnh theo chiều ngang và 224  điểm ảnh theo chiều đứng. Cách mà hình ảnh được hiển thị như dưới đây.  Cách mà máy chơi game của một thời kỳ hiển thị hình ảnh phụ thuộc vào  công nghệ Tivi của thời kỳ đó.
  • Tia  quét bắt đầu từ gốc tọa độ là phía trên, bên trái của màn hình. Tia này  quét từ trái sang phải, khi gặp điểm ảnh có dữ liệu (hiển thị) thì nó  sẽ tô màu lên điểm ảnh đó. Khi quét hết điểm ảnh thứ 256 của 1 đường  quét thì màn hình sẽ tạm tắt. Khoảng thời gian này gọi là H-blank  (Horizontal blank), hiểu nôm na là tắt màn hình khi quét hết đường  ngang.
  • Sau  khi quét hết 1 đường, tia quét trở về gốc xuất phát ở phía ngoài cùng  bên tay trái, nhưng lần này là ở hàng dọc bên dưới và lặp lại chu trình  tô điểm ảnh và H-blank như trên.
  • Khi  quét hết đường thứ 224 thì màn hình sẽ tắt để tia laser trở về gốc tọa  độ ngoài cùng bên trái, bên trên cùng như ban đầu. Khoảng thời gian tắt  màn hình này được gọi là V-blank (Vertical blank). Thực chất là sau khi  quét hết đường thứ 224, tia laser vẫn tiếp tục quét đến đường thứ 225,  sau đó quét đến đường thứ 260 trong trạng thái overflow và trở về đường  số 0. Từ đường 224 trở đi thì màn hình ở trạng thái tắt.

Như  vậy, trong 1 chu trình quét thì có 1 lần V-blank và 224 lần H-blank.  Trong 1 giây có 60 lần lặp lại chu trình như trên, tức là có 60 lần  V-blank và 224 x 60 = 13440 lần H-blank.
Khoảng  thời gian tắt màn hình H-blank và V-blank chính là khoảng thời gian để  cập nhật mới hình ảnh trên màn hình. Ví dụ, tọa độ của hình ảnh nhân vật  đang ở (1, 3) được di chuyển sang (1, 4) chính là trong thời gian này.  Nhưng vì khoảng thời gian H-blank quá ngắn nên thường thì lập trình viên  chọn V-blank để cập nhật hình ảnh. Nói cách khác, SNES có thể thay đổi,  cập nhật hình ảnh trong 1 giây.
Máy  SNES ra đời năm 1990, có thể xem là cỗ máy khá mạnh tại thời điểm đó  (CPU 3.58 Mhz, nhanh hơn máy tính Apple IIGS 2.8 Mhz cũng sử dụng CPU  65816) nhưng không thể so sánh với những cỗ máy ngày nay. Nguyên tắc xử  lý hình ảnh của máy SNES như sau:
  • Thực hiện các tính toán liên quan đến hình ảnh và âm thanh trong khoảng thời gian màn hình không tắt.
  • Dựa vào kết quả tính toán mà cập nhật hình ảnh trong khoảng thời gian màn hình tắt (chủ yếu là V-blank).
Nhưng  vì càng có nhiều hình ảnh hiển thị, càng có nhiều tính toán thì thời  gian tính toán càng kéo dài, do đó sẽ bỏ lỡ mất khoảng thời gian V-blank  của 1 chu trình. Do vậy, rất nhiều game đã chọn giải pháp tính toán  trong 1/nhiều chu trình và cập nhật hình hình ảnh trong khoảng V-blank  của những chu trình sau. Đó là lý do mà đa số game SNES không chạy ở 60  fps. Và điều này vẫn đúng với nhiều hệ máy chơi game đương đại khác. Để  khắc phục điều này thì chỉ có cách nâng cấp phần cứng, để các tính toán  diễn ra nhanh hơn, bắt kịp V-blank trong 1 chu trình, hoặc tối ưu hóa  thuật toán, giảm bớt lượng tính toán để bắt kịp V-blank.

III. Quay màn hình game bằng máy quay Super Slow

Như  đề cập bên trên, cơ chế tạo hình ảnh chuyển động của Tivi là liên tục  thay đổi hình ảnh trong một khoảng thời gian rất ngắn. Với tần suất cập  nhật trong 1 giây lên đến 24 lần, 30 lần, và Tv hiện đại trên 60 lần thì  mắt người không thể phát hiện ra khoảng "khựng" giữa những lần đổi hình  ảnh. Nhưng với mắt của sinh vật khác, chẳng hạn như ruồi thì chúng vẫn  thấy đó là những hình ảnh rời rạc. Cũng giống như khi ta quay lại màn  hình Tv bằng máy quay siêu cao tốc, 380.000 khung hình/giây, như chủ  nhân của kênh Youtube "The Slow Mo Guys" đã làm.


Anh  ta quay màn hình game Super Mario (NES) được hiển thị trên chiếc Tv CRT  bằng máy quay có tốc độ màng trập siêu cao tốc. Tivi này có tần suất  quét từ trên xuống là 30 lần/giây.

Với tốc độ quay 1,600 khung hình/giây (1,600 fps) thì màn hình sạn của Tv trước khi bật game trông như thế này.

Với  tốc độ 2,500 fps  thì màn hình Mario như thế này. Chỉ thấy một dải  sáng, chung quanh tối nhưng vẫn nhận được phần đầu của Mario.

Khi tăng tốc lên 28,500 fps thì có thể nhận thấy đường quét chạy từ phía trái sang phải. Xem video sẽ thấy rõ điều này.

Và khi tăng tốc lên 380,117 fps thì thấy rõ đường quét "tô vẽ" từng điểm ảnh.
Xem video dưới đây thì thấy rõ cách hiển thị hình ảnh của máy NES, phiên bản tiền bối của SNES.

Đối  với màn hình tinh thể lỏng và cách hiển thị hình ảnh của các hệ máy  chơi game sau này như Xbox 360, thì không có tia quét chạy từng hàng như  đối với Tv CRT, mà toàn bộ hình ảnh (khung hình) được hiển thị trong  một khoảng thời gian. Đây là điểm khác biệt lớn so với Tv CRT. Tuy  nhiên, khi cập nhật hình ảnh thì cũng thực hiện lần lượt từ trên xuống,  không khác với thời CRT. Cách mà màn hình smartphone ngày nay hiển thị,  cập nhật hình ảnh cũng tương tự.

IV. Dư đàm

Mãi  đến thời gian gần đây, người ta mới để ý đến khái niệm thời gian cực  nhỏ. Trong khi đó thì từ rất sớm, kinh điển Phật giáo đã đề cập đến khái  niệm này. Phật giáo có khái niệm "sát na" (kṣaṇa) chỉ khoảng thời gian cực ngắn. Theo  kinh "A Tỳ Đạt Ma Đại Tỳ Bà Sa Luận" (Abhidharma-mahāvibhāṣā-śāstra)  thì 1 sát na = 1/75 giây, khoảng thời gian còn nhỏ hơn 1 chu kỳ quét của  máy SNES.
Đối với người thời cổ mà nói thì khoảng thời gian cực ngắn như vậy quả là một điều rất khó hình dung, khó tưởng tượng.