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
Ý kiến Hacker News
Tóm tắt: