1 điểm bởi GN⁺ 2024-07-30 | 1 bình luận | Chia sẻ qua WhatsApp

Thiết kế hệ thống video của Super Nintendo

Bên trong TV vào đầu thập niên 90
  • Super Nintendo xuất video ra TV tiêu chuẩn
  • TV nhận tín hiệu truyền hình analog (NTSC) qua ăng-ten, nhận tín hiệu qua bộ dò và hiển thị hình ảnh trên CRT (ống tia âm cực)
  • TV có đầu vào phụ (AUX), và TV gia dụng thông thường có đầu nối composite (màu vàng) để truyền tín hiệu video cùng các jack riêng cho tín hiệu âm thanh stereo (màu trắng và đỏ)
Nguyên lý hoạt động của CRT
  • CRT hoạt động ở 15kHz và vẽ khoảng 15.000 dòng mỗi giây
  • Bên trong CRT có ba súng điện tử, luôn bắn electron thẳng về phía trước, còn hai bộ nam châm (dọc và ngang) sẽ điều khiển electron di chuyển lên xuống và sang trái phải
  • CRT không có pixel; các electron do súng điện tử bắn ra luôn đến đúng dải màu tương ứng
Cách điều khiển CRT
  • CRT nhận các tín hiệu đỏ, lục, lam nối tới từng súng điện tử tương ứng
  • Tín hiệu đồng bộ (HSYNC và VSYNC) được truyền qua một dây màu trắng duy nhất, gọi là đồng bộ tổng hợp (CSYNC)
  • CRT tiêu thụ các tín hiệu này và cố gắng đồng bộ các súng điện tử
Cách CRT vẽ hình ảnh
  • CRT vẽ từng dòng từ trái sang phải
  • Khi nhận sự kiện HSYNC, nó quay về mép trái màn hình (X=0); khi nhận sự kiện VSYNC, nó quay về đỉnh màn hình (Y=0)
  • CRT vừa di chuyển sang phải vừa nghiêng xuống dưới để vẽ các dòng
Điểm cốt lõi để hiểu CRT
  • Cốt lõi của CRT là hiểu rằng súng điện tử di chuyển sang phải đồng thời nghiêng xuống dưới trên màn hình
  • Nếu VSYNC xảy ra đồng thời với HSYNC cuối cùng, các dòng sẽ luôn được vẽ ở cùng một vị trí trên màn hình
  • Nếu VSYNC xảy ra giữa hai HSYNC, các dòng sẽ được vẽ theo kiểu đan chéo
Nội dung bên trong một dòng
  • CRT là kỹ thuật số ở cấp độ dòng quét, nhưng nội dung bên trong từng dòng lại là analog
  • Ba súng điện tử được nối trực tiếp với các dây RGB, và hệ thống có thể tự do thay đổi tín hiệu màu
Cách các hệ thống thời đó xử lý
  • Các nhà thiết kế SNES phải cung cấp tín hiệu mà CRT có thể xử lý
  • Cần tuân theo đặc tả tín hiệu NTSC
  • Tỷ lệ màn hình 4:3, 262,5 dòng mỗi field, 341,25 điểm mỗi dòng, tần số field 59,94Hz
Trở thành kỹ sư Nintendo
  • Sau khi hiểu cách CRT hoạt động, họ phải thiết kế hệ thống video
  • Họ tạo chế độ progressive bằng 262 dòng và nhắm tới tốc độ khung hình 59,94Hz
  • Họ dùng 350 điểm để khớp tỷ lệ màn hình 4:3, và cần dot clock 5,496,498Hz
Giải quyết vấn đề
  • Không thể dùng dot clock 5,496,498Hz
  • Phải dùng bộ dao động chính để các hệ con sử dụng thông qua bộ chia tần
  • Cần giải quyết vấn đề overscan
Đưa vào overscan
  • Nếu súng điện tử vẫn tiếp tục bắn electron trong lúc đặt lại theo chiều ngang hoặc dọc, sẽ xuất hiện các artefact nhìn thấy được
  • TV dùng overscan cho vùng hiển thị, khiến hình ảnh hiện ra hơi lớn hơn một chút
  • Cần có khoảng thời gian dừng súng điện tử sau VSYNC và HSYNC
Lựa chọn độ phân giải dọc của SNES
  • Các hệ thống cạnh tranh dùng 224 dòng hiển thị
  • Nintendo chia 262 dòng thành 224 dòng hiển thị và 38 dòng trống
Lựa chọn độ phân giải ngang của SNES
  • Dùng 262 dòng và master clock 21.47727MHz để có dot clock 5.3693175MHz
  • Dùng 341 điểm để đạt tốc độ khung hình 60.098Hz
Lựa chọn overscan ngang của SNES
  • Trong 341 điểm, 256 điểm là hiển thị và 85 điểm được dùng cho HBLANK
  • Tỷ lệ màn hình là 8:7, gây ra một chút méo hình
Chế độ độ phân giải cao: interlacing
  • Có thể tăng gấp đôi độ phân giải dọc lên 448 dòng
  • Việc tăng gấp đôi độ phân giải ngang thì khó hơn
PAL so với NTSC
  • Ở châu Âu, người ta dùng PAL thay cho NTSC, còn ở Pháp dùng SECAM
  • PAL dùng tốc độ khung hình 50Hz và 312,5 dòng mỗi field
  • Bản SNES PAL dùng master clock 17.7344750MHz
  • Độ phân giải hiển thị là 224 dòng và 256 điểm, với tốc độ khung hình 50.00697891Hz
Đầu ra
  • SNES chuyển tín hiệu CRT thành composite và S-Video
  • Qua đầu nối AV, máy cung cấp tín hiệu thuần "RGB/CSync", tín hiệu "Composite", và tín hiệu S-Video

Tóm tắt của GN⁺

  • Bài viết này giải thích quá trình thiết kế hệ thống video của Super Nintendo, đồng thời trình bày nguyên lý hoạt động của CRT và cách xử lý tín hiệu
  • Thông qua việc hiểu cách CRT vận hành và xử lý tín hiệu, bài viết lý giải các quyết định thiết kế trong hệ thống video của SNES
  • Bài viết hữu ích với những ai quan tâm đến thiết kế phần cứng máy chơi game và giúp hiểu thêm về lịch sử cũng như nguyên lý hoạt động của công nghệ CRT
  • Những dự án khác có chức năng tương tự gồm Sega Genesis và Neo-Geo AES

1 bình luận

 
GN⁺ 2024-07-30
Ý kiến trên Hacker News
  • 224 là một con số chia hết cho 16, nên rất khớp với tilemap của pipeline kết xuất đồ họa

    • CGA/EGA/VGA đều có chế độ 320x200
    • NES là 256x224, và SNES cũng vậy
    • Pac-Man trên máy arcade là 288x224
    • Các bản clone Pac-Man trên PC lúc nào trông cũng kỳ kỳ
    • Chỉ sau khi tìm hiểu các chi tiết của phần cứng thì tôi mới hiểu ra
    • Pixel trên độ phân giải PC không phải hình vuông
    • Khi xem các bản port hay clone của Pac-Man, tôi đã cố tìm ra kích thước thế giới, kích thước tile và kích thước sprite
  • 59.94Hz là một con số kỳ lạ

    • Bắc Mỹ và một số khu vực khác dùng lưới điện 60Hz
  • Tỷ lệ artwork 8:7 có thể thấy trong các game SFC/SNES được port sang nền tảng khác

    • Các bản PSX/Saturn/PC giữ nguyên artwork gốc và thêm phần đệm để thành 4:3
    • Nếu xem ảnh chụp màn hình bản Saturn, mọi thứ trông hơi gầy hơn một chút
  • Các game ở châu Âu có VSYNC ở 50.00697891Hz nên game chạy chậm hơn dự định 17%

    • Tôi đã thất vọng khi lần đầu chơi Sonic the Hedgehog trên Mega Drive
    • Tôi biết được sự khác biệt tốc độ giữa NTSC và PAL qua YouTube
    • Âm nhạc trên PAL cũng nghe rất tệ
    • DooM trên SNES có bản NTSC với khung hình lớn hơn
    • Tôi chơi Punch-Out rất giỏi trên NES, nhưng nếu thi đấu ở Mỹ thì chắc đã thua ngay vòng đầu
  • Bài gốc có lỗi đánh máy; tỷ lệ 8:6 cũng chính là 4:3

    • Tôi đã dùng đầu ra RF để chuyển giữa SNES và ăng-ten TV
  • Độ phân giải đầu ra 256x224 (8:7) được kéo giãn thành ảnh 4:3

    • Tốc độ dot của SNES chậm hơn tốc độ pixel vuông theo chuẩn ATSC
    • Pixel bị kéo giãn theo chiều ngang thành 8/7, nên độ phân giải 8:7 được mở rộng thành 64:49
    • 224*(4/3) = 298 dot hiển thị
    • 224*(7/6) = 261.33... là số dot hiển thị gần hơn
  • Tôi tự hỏi có trình giả lập nào mô phỏng chính xác diện mạo CRT hay không

    • Về mặt hiệu năng thì có lẽ làm được bằng GPU shader
  • Điều này khiến tôi mong đợi những góc nhìn sâu hơn về việc thiết kế game mang tính biểu tượng đã được hình thành như thế nào

    • Tôi rất thích SNES nhưng không thuyết phục được bố mẹ mua
    • Cảm ơn vì bài viết. Rất thú vị