Chào anh em đồng code,
Mấy nay đang cắm mặt fix bug CSS thì lướt thấy một tin cực 'bánh cuốn' từ đội ngũ Dolphin Emulator. Nếu các ông nghĩ giả lập chỉ là tải cái app về rồi load ROM lậu chơi Mario thì nhầm to. Đằng sau đó là cả một bầu trời chất xám về Reverse Engineering (kỹ thuật đảo ngược) mà anh em dev mình nhìn vào chỉ biết thốt lên: "Ảo ma Canada".
Chuyện là Dolphin - cái giả lập GameCube/Wii xịn xò nhất hệ mặt trời - vừa chính thức hỗ trợ hệ máy Arcade Triforce. Nghe tên như Zelda nhưng thực ra nó là "đứa con chung" của Nintendo, Sega và Namco.
Chuyện gì vừa xảy ra?
Đội ngũ Dolphin vừa đăng đàn một bài blog dài như sớ táo quân (nhưng hay) với tiêu đề "Rise of the Triforce". Tóm tắt nhanh cho anh em đỡ lười đọc:
- Triforce là cái gì?: Nó là phần cứng máy thùng (Arcade) dựa trên kiến trúc GameCube, ra đời tầm đầu những năm 2000. Cấu hình y chang GameCube nhưng được "bơm" thêm RAM và vài module I/O dị hợm.
- Tại sao giờ mới hot?: Trước đây giả lập Triforce trên Dolphin khá là "củ chuối", chạy bằng niềm tin và một đống hack bẩn (hacky code). Game chạy được nhưng crash liên tục hoặc glitch tùm lum.
- Bước ngoặt: Team dev đã quyết định đập đi xây lại (refactor) phần mô phỏng "Media Board" (AM-Baseboard) - cái thứ chuyên giao tiếp với các thiết bị ngoại vi của máy thùng.
- Kết quả: Giờ anh em có thể chiến mượt Mario Kart Arcade GP 2 hay F-Zero AX ngay trên PC mà không cần phải sang Nhật bỏ xu vào máy thùng nữa.
- Góc nhìn kỹ thuật: Đây là minh chứng cho việc hiểu sâu về memory mapping và hardware interrupt quan trọng thế nào. Sai một bit là đi cả dặm.
Cộng đồng mạng nói gì?
Trên Reddit, anh em dev và gamer đang bàn tán xôm tụ. Không chỉ khen team Dolphin, mà còn lôi chuyện cũ ra khịa:
- Cấu hình máy thời Tống: Một ông (ninadpathak) than thở ngày xưa dùng laptop ghẻ giả lập Zelda: Majora’s Mask mà CPU nóng chảy cả ra, phải hạ xuống 480p mới lết được 15fps. Đúng là thời thế tạo anh hùng, giờ giả lập mượt như sunsilk.
- Phản bác cực gắt: Ngay lập tức có ông khác (warmarin) vào "phủ đầu": "Laptop ông lởm khởm thế nào chứ năm 2003 tôi dùng con Athlon XP cổ lỗ sĩ chạy Project64 ầm ầm, xuất ra TV S-Video nét căng." => Bài học: Code tối ưu là một chuyện, phần cứng "phèn" quá thì chịu chết.
- Xu hướng mới - Decompilation: Một cao nhân (Godd2) nhắc nhở anh em: Giờ ai chơi giả lập nữa, xu thế là Decompilation (dịch ngược code ra C/C++ rồi build lại native). Ví dụ con Ship of Harkinian (port native của Zelda OOT) chạy bao mượt, support cả màn hình rộng, mod miếc tẹt ga. Đây mới là tương lai, nhưng tốn cơm gạo ngồi dịch code lắm.
- Hài hước: Có ông còn cà khịa: "Nếu chơi bản PAL (châu Âu) thì 15fps coi như là full speed rồi, kêu ca gì nữa" (ám chỉ mấy game hệ PAL ngày xưa bị lock fps thấp thảm hại).
Góc nhìn của Coding4Food
Thực sự mà nói, nhìn vào project Dolphin mới thấy cái tâm và cái tầm của Open Source.
- Tinh thần 'Hardcore': Làm mấy cái này không có tiền. Dev làm vì đam mê, vì muốn bảo tồn di sản game. Nhìn lại anh em mình, code cái feature bé tí mà PM giục deadline là muốn 'commit suicide' rồi. Phải ngả mũ trước sự kiên trì của họ.
- Bài học về Refactor: Team Dolphin thừa nhận code cũ hỗ trợ Triforce là một đống hổ lốn (spaghetti code). Họ chấp nhận đập đi làm lại để kiến trúc sạch đẹp hơn, dễ bảo trì hơn. Anh em dev nhớ nhé: Technical Debt (nợ kỹ thuật) không tự mất đi, nó chỉ chuyển từ kiếp này sang kiếp khác thôi. Trả nợ sớm thì bớt khổ.
- Tối ưu hóa: Đừng đổ lỗi cho phần cứng. Nhìn cách họ tối ưu từng chu kỳ CPU để giả lập chạy mượt trên máy tính cá nhân kìa. Code sạch, thuật toán ngon thì server khoẻ, đỡ tốn tiền AWS cho công ty.
Tóm lại, ai rảnh thì tải về vọc thử, còn không thì cứ vào đọc source code của họ để mở mang tầm mắt. Đảm bảo uy tín hơn mấy khoá học lùa gà 200 bài code thiếu nhi nhiều.
Happy coding, đừng để bug cắn!