Image default
Game

Kiến trúc Nintendo NES: Giải mã cách hệ máy huyền thoại này hoạt động và vượt thời đại

Ở cốt lõi, hệ máy Nintendo Entertainment System (NES) được cung cấp năng lượng bởi một biến thể tùy chỉnh của bộ vi xử lý 6502. Tuy nhiên, điều thực sự làm nên sự khác biệt của nó chính là cách các thành phần hoạt động cùng nhau. Không giống như các console khác cùng thời, NES đã thúc đẩy một cách tiếp cận thiết kế mô-đun độc đáo. Các thành phần phần cứng của nó tương đối đơn giản, nhưng kiến trúc của nó cho phép các cartridge trở thành một phần mở rộng của hệ thống, đảm nhận các tác vụ mà các console khác đã tích hợp cứng vào bo mạch chủ của chúng.

Sự linh hoạt này đã mang lại cho các nhà phát triển không gian để phát hành một số trò chơi hay nhất của kỷ nguyên đó, và đảm bảo NES sẽ giữ vững vị thế trên thị trường game trong gần một thập kỷ. Thậm chí đến tận bây giờ, 40 năm sau, một số người đã đưa .NET chạy được trên phần cứng gốc của NES. Bài viết này sẽ phân tích chi tiết cách kiến trúc NES được thiết kế, kiểm tra các thành phần cốt lõi của nó và khám phá cách mọi thứ hoạt động cùng nhau để mang lại trải nghiệm chơi game mang tính biểu tượng của nó.

Máy chơi game Nintendo Entertainment System (NES) màu xámMáy chơi game Nintendo Entertainment System (NES) màu xám

Bên trong NES: Ba nhóm cấu thành, một hệ thống đồng bộ

Cartridge đã mở rộng khả năng của console như thế nào?

Kiến trúc của NES có thể được chia thành ba nhóm chính: các thành phần liên quan đến CPU, các thành phần liên quan đến PPU và các thành phần dành riêng cho cartridge. Cùng nhau, các nhóm này xử lý logic, hình ảnh và các cải tiến cụ thể cho trò chơi, giao tiếp thông qua một hệ thống bus được phối hợp chặt chẽ. Bằng cách ủy thác một số khả năng nhất định cho cartridge, Nintendo đã giữ cho console có giá thành phải chăng, đồng thời trao quyền cho các nhà phát triển thúc đẩy phần cứng mạnh mẽ hơn với mỗi trò chơi mới và tăng tuổi thọ của hệ thống.

  • Nhóm liên quan đến CPU bao gồm bộ vi xử lý trung tâm (CPU), bộ xử lý âm thanh (APU) và chip RAM tĩnh 2KB (WRAM). Các yếu tố này hoạt động cùng nhau để thực thi logic của trò chơi, xử lý âm thanh và quản lý dữ liệu tạm thời.
  • Nhóm liên quan đến PPU được dành riêng cho việc hiển thị hình ảnh. Nó bao gồm bộ xử lý hình ảnh (PPU) và RAM video (VRAM) liên quan, quản lý mọi thứ từ các đối tượng đồ họa (sprite) của nhân vật đến các ô nền (background tiles).
  • Nhóm cartridge bao gồm bộ nhớ chương trình ROM (PRG-ROM) và bộ nhớ ký tự (CHR-ROM hoặc CHR-RAM), và nhiều cartridge còn có thêm các thành phần bổ sung như mappers (MMC) hoặc thậm chí là chip VRAM 8KB riêng trên cartridge để xử lý các trò chơi phức tạp hơn.

Trong khi nhiều console cùng thời sử dụng cartridge chủ yếu làm phương tiện lưu trữ, NES đã tạo nên sự khác biệt bằng cách tận dụng khe cắm cartridge để giao tiếp trực tiếp với cả nhóm CPU và PPU. Thiết kế này cho phép tích hợp phần cứng tùy chỉnh, như MMCs và VRAM mở rộng, ngay trong các cartridge. Sự tích hợp của khe cắm cartridge với PPU và CPU cho phép các cartridge sửa đổi trực tiếp các khía cạnh chính về đồ họa, âm thanh và bộ nhớ, mang lại cho các nhà phát triển sự linh hoạt cao hơn để mở rộng khả năng của hệ thống. Đây là lý do tại sao chúng ta thấy sự tiến bộ ổn định của các trò chơi chất lượng tốt hơn trong suốt vòng đời của NES.

Cổng kết nối cartridge 72 chân của Nintendo NES, một phần quan trọng của kiến trúc mô-đunCổng kết nối cartridge 72 chân của Nintendo NES, một phần quan trọng của kiến trúc mô-đun

Các khối kiến trúc mô-đun của NES

Các thành phần liên quan đến CPU: Bộ não của NES

Trái tim của NES là CPU của nó, một chip Ricoh tùy chỉnh (RP2A03 cho NTSC và RP2A07 cho các vùng PAL) dựa trên bộ xử lý MOS Technology 6502 được sử dụng trong Apple II. Không giống như 6502 tiêu chuẩn, phiên bản NES thiếu hỗ trợ cho các hoạt động BCD (Binary-Coded Decimal), hữu ích trong các ứng dụng như máy tính hoặc phần mềm kinh doanh nhưng phần lớn không liên quan trong trò chơi. Chế độ BCD đã được MOS Technology cấp bằng sáng chế, và bằng cách vô hiệu hóa mạch BCD, Nintendo và Ricoh có thể tránh phí cấp phép mà họ phải trả cho MOS Technology.

Hình ảnh cận cảnh chip CPU Ricoh 6502, bộ vi xử lý trung tâm của máy Nintendo NES đời đầuHình ảnh cận cảnh chip CPU Ricoh 6502, bộ vi xử lý trung tâm của máy Nintendo NES đời đầu

Điều làm cho CPU của NES trở nên độc đáo là nó không chỉ là một bộ xử lý—nó còn chứa bộ xử lý âm thanh (APU). Bộ xử lý đồng thời này tạo ra âm thanh bằng cách sử dụng năm kênh: hai kênh xung (pulse channels) cho giai điệu, một kênh tam giác (triangle channel) cho âm trầm, một kênh nhiễu (noise channel) cho bộ gõ và một kênh DMC để phát âm thanh mẫu. APU đã mang lại cho NES âm thanh 8-bit đặc trưng của nó, và đó là lý do tại sao việc tùy chỉnh mạch NES lại thú vị đến vậy.

Chip WRAM 2KB của Nintendo NES đời đầu, nơi lưu trữ dữ liệu tạm thời cho trò chơiChip WRAM 2KB của Nintendo NES đời đầu, nơi lưu trữ dữ liệu tạm thời cho trò chơi

2KB RAM làm việc (WRAM) được dán nhãn BR6216C-10LL được sử dụng để lưu trữ dữ liệu có thể thay đổi — thông tin có thể được thay đổi hoặc sửa đổi sau khi được tạo. Mặc dù bị hạn chế, việc lập trình thông minh đã cho phép các nhà phát triển tận dụng tối đa dung lượng thấp này. Ví dụ, thay vì giữ toàn bộ bản đồ trong bộ nhớ, các trò chơi như The Legend of Zelda đã sử dụng các thuật toán để tạo dữ liệu bản đồ động trong quá trình chơi.

Nói một cách đơn giản, CPU là “bộ não” của NES, chạy mã trò chơi, xử lý đầu vào và chỉ đạo các thành phần khác phải làm gì. Phần APU của CPU điều khiển âm thanh, và WRAM đóng vai trò là không gian làm việc để theo dõi mọi thứ đang diễn ra trong trò chơi.

Các thành phần liên quan đến PPU: Xử lý hình ảnh của NES

Đồ họa của NES được xử lý bởi Đơn vị xử lý hình ảnh (PPU), một chip Ricoh tùy chỉnh có nhãn RP2C02H-O. Trong khi CPU thực thi logic của trò chơi, PPU chỉ tập trung vào việc hiển thị hình ảnh lên màn hình. Nó được thiết kế để vẽ hai lớp riêng biệt: các ô nền (background tiles) và các đối tượng đồ họa (sprites), về cơ bản là các đối tượng di chuyển như nhân vật, kẻ thù hoặc đạn.

Hình ảnh cận cảnh chip PPU Ricoh RP2C02H-O, đơn vị xử lý hình ảnh của hệ máy NESHình ảnh cận cảnh chip PPU Ricoh RP2C02H-O, đơn vị xử lý hình ảnh của hệ máy NES

Không giống như các GPU hiện đại, PPU không thể lập trình trực tiếp. Thay vào đó, CPU điều khiển nó thông qua các thanh ghi I/O được ánh xạ bộ nhớ (memory-mapped I/O registers), hoạt động như một cầu nối giữa hai thành phần. Các thanh ghi này cho phép CPU yêu cầu PPU vẽ những ô nào, đặt chúng ở đâu và tô màu chúng như thế nào. Chẳng hạn, khi Mario nhảy trong Super Mario Bros., CPU cập nhật các thanh ghi PPU để di chuyển sprite của Mario theo chiều dọc trong khi vẽ lại các ô nền thích hợp khi anh ấy di chuyển.

Chip VRAM 2KB của Nintendo NES đời đầu, lưu trữ dữ liệu video cho đồ họaChip VRAM 2KB của Nintendo NES đời đầu, lưu trữ dữ liệu video cho đồ họa

Hỗ trợ PPU là 2KB VRAM (RAM video), cùng loại SRAM được sử dụng cho WRAM. VRAM này lưu trữ các bảng tên (name tables – ánh xạ vị trí các ô xuất hiện trên màn hình), các bảng thuộc tính (attribute tables – xử lý việc gán màu cho các nhóm ô) và các bảng màu (palettes – các màu cụ thể mà mỗi ô có thể sử dụng). Các bảng này cho phép các nhà phát triển tạo ra hình ảnh phức tạp bất chấp phần cứng hạn chế của NES.

Để tiết kiệm tài nguyên, NES chỉ có đủ VRAM để hỗ trợ hai màn hình bảng tên, đó là lý do tại sao các trò chơi như Metroid sử dụng kỹ thuật “mirroring” (phản chiếu) để tái sử dụng các phần của màn hình khi cuộn ngang hoặc dọc. Các nhà phát triển có thể điều khiển việc mirroring này bằng cách sử dụng các thanh ghi được ánh xạ bộ nhớ, đảm bảo lối chơi mượt mà ngay cả với phần cứng hạn chế.

Nói một cách đơn giản, nhóm PPU hoạt động tương tự như nhóm CPU nhưng được dành hoàn toàn cho đồ họa. Trong khi CPU xử lý logic của trò chơi, PPU xử lý mọi thứ về hình ảnh—vẽ nền, nhân vật và hoạt ảnh trên màn hình bằng dữ liệu được lưu trữ trong VRAM.

Các thành phần liên quan đến Cartridge: Mở rộng vô hạn cho NES

Trong khi PPU và CPU tạo thành cốt lõi của NES, các cartridge đã thêm vào sự kỳ diệu làm cho mỗi trò chơi trở nên độc đáo. Cartridge không chỉ là một thiết bị lưu trữ — nó là một phần mở rộng của console, giao tiếp trực tiếp với cả CPU và PPU thông qua một đầu nối 72 chân.

Cận cảnh cổng kết nối cartridge 72 chân trên bo mạch chủ NES, điểm giao tiếp giữa console và gameCận cảnh cổng kết nối cartridge 72 chân trên bo mạch chủ NES, điểm giao tiếp giữa console và game

Mỗi cartridge đều chứa một chip Program ROM (PRG-ROM), lưu trữ mã của trò chơi, và một Character ROM (CHR-ROM) hoặc CHR-RAM, lưu trữ dữ liệu ô cho đồ họa. Đối với các trò chơi sử dụng CHR-ROM, đồ họa được tải sẵn vào cartridge, trong khi các trò chơi sử dụng CHR-RAM cho phép CPU sửa đổi đồ họa động trong quá trình chơi.

Một số cartridge bao gồm RAM đa năng bổ sung (lên đến 8KB) để mở rộng bộ nhớ của NES và lưu trữ dữ liệu trò chơi đã lưu. Các cartridge này thường có một viên pin CR2032 được hàn vào PCB, dùng để giữ lại tiến trình đã lưu ngay cả khi console đã tắt — một tính năng được sử dụng trong các trò chơi như The Legend of Zelda.

Bo mạch PCB bên trong một cartridge Nintendo NES, hiển thị các chip ROM và MMCBo mạch PCB bên trong một cartridge Nintendo NES, hiển thị các chip ROM và MMC

Một trong những tính năng sáng tạo nhất của NES là khả năng tích hợp các Bộ điều khiển quản lý bộ nhớ (Memory Management Controllers – MMC) vào các cartridge. Các chip này cho phép các nhà phát triển vượt qua giới hạn bộ nhớ 64KB có thể truy cập của console bằng cách kích hoạt bank switching. Bằng cách hoán đổi các khối bộ nhớ vào và ra khỏi phạm vi truy cập của CPU, các nhà phát triển có thể bao gồm các trò chơi lớn hơn và phức tạp hơn trên một cartridge duy nhất. MMCs cũng giới thiệu các tính năng như cuộn mượt mà và bảng màu mở rộng.

Một số cartridge nâng cao thậm chí còn đi kèm với VRAM riêng trên bo mạch, cho phép chúng xử lý dữ liệu đồ họa độc lập với VRAM tích hợp sẵn của console. Ví dụ, các trò chơi như Kirby’s Adventure đã sử dụng những cải tiến này để đẩy ranh giới những gì NES có thể hiển thị.

Nói một cách đơn giản, cartridge không chỉ là một phương tiện lưu trữ — nó thực sự là một phần không thể thiếu trong kiến trúc của NES. Bằng cách nhúng thêm phần cứng trực tiếp vào cartridge, các nhà phát triển có thể thoát khỏi những hạn chế của console và đẩy xa hơn ranh giới của những gì có thể thực hiện được vào thời điểm đó.

Cách mọi thành phần giao tiếp: Hệ thống Bus của NES

Mặt dưới bo mạch chủ của Nintendo NES đời đầu, thể hiện các đường mạch bus dữ liệu và địa chỉMặt dưới bo mạch chủ của Nintendo NES đời đầu, thể hiện các đường mạch bus dữ liệu và địa chỉ

Các thành phần của NES hoạt động cùng nhau thông qua một hệ thống được phối hợp tốt gồm các bus dữ liệu (data bus) và bus địa chỉ (address bus). CPU luôn được kết nối với các bus này, thay đổi luồng dữ liệu giữa WRAM, PPU, APU và cartridge trò chơi.

  • Bus dữ liệu: Bus song song 8-bit này mang thông tin thực tế, như hướng dẫn trò chơi hoặc dữ liệu đồ họa, giữa các thành phần.
  • Bus địa chỉ: Bus 16-bit này xác định nơi lưu trữ dữ liệu cụ thể, dù là trong WRAM, VRAM hay cartridge.

Mỗi thành phần có một tín hiệu chọn chip (chip-select signal), được điều khiển bởi một chip logic rời rạc có nhãn 74LS139, đảm bảo chỉ thành phần chính xác mới phản hồi khi dữ liệu được truy cập. Ví dụ, khi CPU cần cập nhật vị trí của Mario, bus địa chỉ xác định chính xác vị trí bộ nhớ trong WRAM, trong khi bus dữ liệu gửi các tọa độ mới.

Để duy trì hiệu quả, NES sử dụng I/O được ánh xạ bộ nhớ (memory-mapped I/O), chia bộ nhớ 64KB của CPU thành các vùng được gán cho các thành phần cụ thể. Thiết lập này cho phép CPU tương tác liền mạch với tất cả phần cứng, coi PPU, APU và cartridge như thể chúng chỉ là các vị trí bộ nhớ bổ sung.

Nói một cách đơn giản, hệ thống giao tiếp của NES hoạt động giống như một mạng lưới các sứ giả, mỗi người chịu trách nhiệm mang thông tin cụ thể giữa các thành phần. CPU đóng vai trò là điều phối viên trung tâm, đảm bảo rằng logic trò chơi, đồ họa và dữ liệu âm thanh đều đến đúng nơi vào đúng thời điểm.

Một kiệt tác mô-đun của lịch sử gaming

Khai phá quá khứ qua kỹ thuật đảo ngược

Máy console NES và súng Light Gun, biểu tượng của kỷ nguyên gaming cổ điểnMáy console NES và súng Light Gun, biểu tượng của kỷ nguyên gaming cổ điển

Thiết kế phần cứng của NES là độc đáo vào thời điểm đó, và nó chắc chắn đã mang lại thành công. Bằng cách ủy thác một số phần cứng của console cho cartridge, Nintendo đã tạo ra một hệ thống vừa tiết kiệm chi phí vừa dễ dàng thích nghi. Đó là điều đã giúp nó giữ vững vị thế trong gần một thập kỷ và cho phép các nhà phát triển đẩy giới hạn của những gì có thể trong thiết kế trò chơi.

Ngày nay, chúng ta có thể tháo rời những cỗ máy này, phân tích từng đường mạch trên bo mạch và hiểu đầy đủ cách chúng hoạt động. Mức độ truy cập đó là một phần của điều làm cho điện toán retro trở nên hấp dẫn — bạn có thể theo dõi mọi kết nối, xem mọi thứ khớp với nhau như thế nào, và thậm chí tự mình tái tạo phần cứng với các dự án như OpenTendo.

Tại sao cảm giác không còn đơn giản như vậy nữa?

Thật không may, với điện toán hiện đại, loại hiểu biết sâu sắc, thực tế đó dường như gần như không thể đạt được. Với các bộ xử lý chứa hàng tỷ bóng bán dẫn và phần mềm dựa vào các lớp trừu tượng, ý tưởng tháo rời hoàn toàn một hệ thống hiện đại theo cách chúng ta làm với NES dường như là bất khả thi. Đối với nhiều người trong chúng ta, chiếc máy tính mạnh nhất chúng ta sở hữu có lẽ nằm trong túi của mình. Liệu ai đó, vài thập kỷ sau, có đang đảo ngược kỹ thuật công nghệ ngày nay theo cùng một cách không? Hay kỷ nguyên thực sự hiểu cách một thứ hoạt động, đến từng mạch điện cuối cùng, đã qua rồi?

Dù sao đi nữa, có một điều gì đó thỏa mãn khi đi sâu vào phần cứng, cho dù đó là phân tích kiến trúc của một console cổ điển hay làm việc trên các dự án của riêng bạn ngày nay. Nếu bạn đã đọc đến đây, rất có thể bạn cũng chia sẻ sự tò mò đã truyền cảm hứng cho rất nhiều người để thử nghiệm với NES vào thời đó. Vì vậy, có lẽ đây là dấu hiệu để bạn cuối cùng bắt đầu dự án Arduino đó, tự xây dựng máy tính để bàn của riêng mình, hoặc biến chiếc laptop cũ thành một NAS. Sau cùng, cách tốt nhất để hiểu một hệ thống là tự mình trải nghiệm nó.

Related posts

Game Chiến Thuật Fantasy General II Miễn Phí Vĩnh Viễn Trên Steam: Cơ Hội Vàng Không Thể Bỏ Lỡ

Administrator

Những Tựa Game Đáng Đặt Trước (Pre-order) Nhất Mà Game Thủ Việt Không Nên Bỏ Lỡ

Administrator

Grand Theft Auto V Thống Trị Twitch 2024: Vì Sao Game Cũ Vượt Mặt Mọi Đối Thủ?

Administrator