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

Phát hiện mã mới trong NES Tetris

  • Các hacker đã phát hiện ra cách tái lập trình NES Tetris ngay bên trong game
  • Phương pháp này có thể giúp những người săn điểm cao tránh được lỗi crash khi game kết thúc

Cách thực thi mã

  • Bằng cách tận dụng "kill screen" của NES Tetris để thao tác bộ nhớ theo một phương thức phức tạp, có thể lập trình hành vi mới cho phiên bản Tetris chạy trên phần cứng và băng game nguyên bản, không chỉnh sửa
  • Những glitch "thực thi mã tùy ý" tương tự cũng từng được phát hiện trong các game như Super Mario World, Paper Mario và The Legend of Zelda: Ocarina of Time
  • Cách cơ bản để đưa mã bên ngoài vào NES Tetris đã được công khai dưới dạng lý thuyết ít nhất từ năm 2021
  • Phương pháp này mô tả chi tiết cách khiến bảng điểm cao của Tetris bắt đầu được đọc như các lệnh mã máy

Niềm vui với cổng tay cầm

  • Lỗi crash của NES Tetris xảy ra khi bộ xử lý điểm số của game mất quá nhiều thời gian để tính điểm mới giữa các khung hình
  • Khi độ trễ này xảy ra, một phần mã điều khiển sẽ bị ngắt bởi quy trình ghi khung hình mới, rồi nhảy sang một vùng RAM ngoài ý muốn để tìm lệnh tiếp theo
  • Khi chạy trên Famicom, phiên bản console Nhật Bản, người chơi có thể điều khiển cú nhảy này nhờ cách Tetris xử lý các đầu vào tiềm năng

Lập trình trong bảng điểm cao

  • Với phương pháp điều khiển cú nhảy của Displaced Gamers, người chơi phải giữ nút "lên" trên tay cầm thứ ba, và các nút phải, trái, xuống trên tay cầm thứ tư
  • Việc này sẽ đưa mã nhảy tới vùng RAM lưu tên và điểm số của danh sách điểm cao trong game, cung cấp một bề mặt RAM lớn hơn mà người chơi có thể trực tiếp thao tác
  • Đặt "(G" vào phần mục tiêu của bảng điểm cao có thể buộc game nhảy sang vùng khác của bảng điểm cao
  • Từ đây, game sẽ bắt đầu đọc tuần tự tên và điểm số như các opcode dành cho CPU của NES
  • Tuy nhiên, vì khu vực nhập tên chỉ có 43 ký hiệu khả dụng và phần điểm cao chỉ có thể chứa 10 chữ số, nên chỉ một phần các lệnh opcode của NES có thể được "lập trình" vào bảng điểm cao
  • Do không có hệ thống lưu pin dự phòng, các hacker phải tự tay đạt được những điểm cao này và nhập những cái tên phức tạp mỗi khi khởi động Tetris

Ý kiến của GN⁺

  • Thật đáng kinh ngạc khi phiên bản NES của Tetris lại có một khả năng ẩn như vậy. Có vẻ như nó không được phát hiện vào thời điểm đó, và việc chỉ đến hàng chục năm sau mới được tìm ra khiến điều này càng thú vị hơn.
  • Việc có thể thực hiện kiểu hack này thông qua cổng mở rộng của Famicom cũng rất đáng chú ý. Có lẽ đây không phải là tính năng Nintendo chủ đích tạo ra, nhưng dường như nó cho thấy ưu thế của Famicom, vốn giàu tính năng hơn so với NES.
  • Ý tưởng tận dụng lỗi này để cấy vào đoạn mã giúp ngăn crash ngược lại cũng rất sáng tạo. Về lý thuyết, nó có thể cho phép tiếp tục chơi, nên sẽ là trợ giúp lớn cho các màn chinh phục điểm cao.
  • Tuy nhiên, việc phải thiết lập phức tạp mỗi lần bắt đầu game khiến phương pháp này có vẻ khá bất tiện. Nếu muốn dùng thực tế, có lẽ sẽ cần một cách tự động hóa tốt hơn.
  • Có lẽ phương pháp này sẽ hấp dẫn hơn với những người đam mê chinh phục điểm cao hoặc quan tâm đến lập trình, hơn là người chơi phổ thông chỉ muốn tận hưởng game. Nó có vẻ khó được sử dụng rộng rãi.

1 bình luận

 
GN⁺ 2024-05-09
Ý kiến Hacker News

Tóm tắt:

  • Câu thoại trong tiểu thuyết Accelerando của Stross, nói rằng mục tiêu tối thượng của hacking là “hack cấu trúc của không-thời gian để tìm ra thứ nằm bên dưới nó”, gợi nhớ đến kiểu exploit này.
  • Cảm thấy xấu hổ vì mình không có tinh thần hacker là làm điều gì đó chỉ cho vui, không vì bất kỳ mục đích thực tiễn nào.
  • Băng game NES chạy từ ROM, nhưng exploit này khiến CPU nhảy sang RAM được dùng để lưu bảng điểm cao.
  • Có người tự hỏi sẽ mất bao lâu để chạy Doom bên trong Tetris.
  • Muốn tạo ra một máy tính khổng lồ bằng băng chuyền trong Factorio rồi gây ra segfault để thoát ra khỏi game.
  • Nghĩ rằng đây là cách lãng phí thời gian rất xứng đáng.
  • Việc tìm ra ACE trong các game cũ là cực kỳ thú vị. Vài năm trước đã thấy điều này trong Super Mario World và bị ám ảnh bởi chuyện nó có thể xảy ra như thế nào.
  • Thật thích khi thấy những người cực kỳ thông minh đổ rất nhiều thời gian và công sức vào một việc hoàn toàn vô dụng.
  • Có thể hiện tại chưa có lý do nào để chèn mã vào NES Tetris, nhưng đó không phải là vấn đề chính. Điểm cốt lõi là tìm ra điều gì là khả thi, và có thể bắt mã cũ cùng những chiếc máy tính nguyên thủy làm được những gì.
  • Thật ngạc nhiên là phải mất lâu như vậy Tetris mới bị phá. Điều này báo hiệu một kỷ nguyên mới của các màn chạy any% với mục tiêu kích hoạt ending/credits nhanh nhất có thể.
  • Ocarina of Time đã có các exploit ACE trong nhiều năm. Nó đã bị phá hỏng hoàn toàn đến mức có thể “hoàn thành” chỉ trong vài phút bằng cách thao túng bộ nhớ game và chỉnh sửa các warp lối vào cụ thể.
  • Điều đáng kinh ngạc nhất là mọi người chỉnh sửa bộ nhớ bằng tay chỉ với vài nút bấm và cần analog.
  • Khả năng thực thi mã tùy ý luôn thú vị hơn bất kỳ việc gì người ta làm sau đó.
  • Việc dịch ngược game để tìm ra khi nào và ở đâu có thể làm tất cả chuyện này, rồi ở đâu có thể thao túng để nhập lệnh tiếp theo, là mức độ cống hiến đáng khâm phục.
  • Cảm giác như việc bỏ thời gian cho NES/SNES vào năm 2024 là bằng chứng cho thấy Nintendo đã dùng các chiêu kiểm soát tinh thần/tâm lý phi đạo đức lên trẻ em.
  • Những người này có tài năng, và dường như không có lý do hợp lý nào để họ chọn dự án này.