Doom tiếp tục “xâm chiếm” phần cứng lạ: Lần này là… tai nghe không dây
Ba thập kỷ sau ngày ra mắt, Doom vẫn chưa hề lỗi thời trong cộng đồng lập trình viên và những người yêu thích thử nghiệm phần cứng. Câu hỏi quen thuộc “Thiết bị này có chạy được Doom không?” tiếp tục trở thành động lực cho hàng loạt dự án độc đáo, khi tựa game FPS huyền thoại này liên tục được đưa lên những nền tảng tưởng chừng không thể.
Mới đây, nhà phát triển Arin Sarkisian đến từ Úc đã khiến cộng đồng công nghệ bất ngờ khi công bố DoomBuds – một dự án cho phép chạy Doom trực tiếp trên tai nghe không dây. Đáng chú ý hơn, hệ thống này còn được kết nối internet, cho phép người dùng chơi Doom từ xa thông qua trình duyệt web.
Nền tảng phần cứng được lựa chọn là Pinebuds Pro, mẫu tai nghe hiếm hoi hỗ trợ phần mềm mã nguồn mở. Mỗi bên tai nghe được trang bị vi xử lý Cortex-M4F, có khả năng hoạt động ở xung nhịp tối đa 300 MHz. Trong điều kiện thông thường, CPU này bị giới hạn ở mức thấp hơn để tiết kiệm pin, nhưng bằng cách vô hiệu hóa các cơ chế tiết kiệm năng lượng, Sarkisian đã khai thác toàn bộ hiệu năng phần cứng để chạy phần mềm vốn được thiết kế cho môi trường DOS.
Dù vậy, quá trình hiện thực hóa ý tưởng không hề đơn giản. Kết nối Bluetooth tỏ ra không đủ nhanh để truyền dữ liệu hình ảnh, buộc nhà phát triển phải sử dụng giao tiếp USB-to-UART thông qua các điểm tiếp xúc trên tai nghe. Phương thức này cung cấp đủ băng thông để truyền từng khung hình Doom có dung lượng khoảng 96 KB.
Dung lượng bộ nhớ cũng là một rào cản lớn. Pinebuds Pro chỉ cung cấp tối đa 992 KB RAM khi vô hiệu hóa bộ xử lý phụ, trong khi Doom thông thường cần ít nhất 4 MB RAM để hoạt động. Để giải quyết vấn đề, Sarkisian đã tiến hành hàng loạt tối ưu hóa sâu, đồng thời chỉnh sửa file WAD của Doom, giảm dung lượng phiên bản shareware từ 4,2 MB xuống còn 1,7 MB.
Sau nhiều vòng thử nghiệm và tinh chỉnh, toàn bộ mã nguồn của DoomBuds đã được nén vừa vặn vào bộ nhớ flash của tai nghe. Dự án dựa trên doomgeneric – một framework giúp đơn giản hóa việc port Doom sang các nền tảng phi truyền thống. Bên cạnh đó, kho DoomBuds-JS cho phép người dùng tương tác với tai nghe trực tiếp từ trình duyệt.
Hình ảnh trong game được truyền qua kết nối USB-to-UART dưới dạng luồng MJPEG nén, trong đó mỗi khung hình được mã hóa thành một file JPEG riêng biệt. Do khả năng xử lý mã hóa hình ảnh của SoC khá hạn chế, DoomBuds chỉ đạt tốc độ hiển thị tối đa khoảng 18 khung hình/giây.
Dù tồn tại nhiều giới hạn về hiệu năng và cách vận hành có phần “kỳ quặc”, DoomBuds vẫn được xem là một cột mốc đáng chú ý trong lịch sử port Doom. Trước đó, tựa game này từng xuất hiện trên trình bảo vệ màn hình, máy chủ web, vệ tinh quỹ đạo thấp, pin dự phòng, mã QR hay thậm chí cả các hộp bìa cứng sưu tầm.
DoomBuds một lần nữa cho thấy sức sống bền bỉ của Doom, đồng thời khẳng định rằng với đủ đam mê và sáng tạo, gần như không có giới hạn nào cho việc đưa một trò chơi huyền thoại lên những nền tảng “không tưởng”.