Giao diện website mon-fs hướng dẫn tạo Pokémon để mã hóa dữ liệu, hiển thị thông tin Pokémon cần thiết như tên, giới tính và vật phẩm giữ.
Máy Tính

Khám Phá Kỹ Thuật Lưu Trữ Dữ Liệu Độc Đáo Trong Pokémon Emerald

Pokémon Emerald vẫn luôn là một trong những tựa game kinh điển gợi lại ký ức tuổi thơ cho không ít game thủ. Ngày nay, cộng đồng mod game đã thổi một luồng sinh khí mới vào các phiên bản Pokémon cũ, kéo dài tuổi thọ của chúng hàng thập kỷ sau. Đáng kinh ngạc hơn, chính bối cảnh modding sôi động này còn mở ra một khả năng đặc biệt: lưu trữ một tập tin ngay bên trong dữ liệu của Pokémon Emerald. Cụ thể, bạn có thể “nhúng” một tệp tin với dung lượng lên tới 10.8 KB – và chúng tôi đã thử nghiệm điều này.

Để dễ hình dung, khi bạn mở bất kỳ tập tin nào trên máy tính, dù là một tài liệu văn bản, hình ảnh, hay thậm chí là trang web này, bạn đang tương tác với một tập hợp các cấu trúc dữ liệu mà máy tính biết cách giải mã để hiển thị nội dung theo mong muốn. Ví dụ, với một trang web, bạn có thể dễ dàng xem mã HTML nguồn mà trình duyệt của bạn đọc và hiển thị. Tương tự, máy tính của bạn biết cách đọc dữ liệu bên trong một tệp JPG để chuyển đổi và trình chiếu thành một bức ảnh.

Khái quát hóa ý tưởng này, chúng ta có thể thấy rằng thực tế, bất cứ thứ gì cũng có thể trở thành một “thùng chứa” dữ liệu, miễn là có một phương pháp cấu trúc rõ ràng để lưu trữ và sau đó khôi phục dữ liệu đó. Do vậy, việc lưu trữ dữ liệu trong Pokémon Emerald là hoàn toàn khả thi, và tất cả là nhờ vào dự án mon-fs. Công cụ này mã hóa dữ liệu của bạn thành chính những Pokémon. Đây là một quá trình khá thủ công và chậm chạp, nhưng nó lại là một cách rất thú vị để minh họa cách dữ liệu được lưu trữ và làm thế nào mà hầu như bất kỳ thứ gì cũng có thể được dùng làm nơi chứa dữ liệu.

Cách Pokémon Trở Thành “Thùng Chứa Dữ Liệu”

68 Bit Dữ Liệu Cho Mỗi Pokémon

Khi bạn quan sát một Pokémon trong tựa game Emerald, nhiều thông số của chúng như biệt danh, giới tính, OT (Người huấn luyện gốc), băng ruy băng (ribbons), loại bóng dùng để bắt, và điểm kinh nghiệm (EXP) đều là những giá trị có thể được người chơi tác động. Đây chính xác là cách mon-fs hoạt động. Dự án này cung cấp hai chế độ lưu trữ: “Lite” và “Full”.

  • Chế độ Lite: Cho phép lưu trữ một tập tin lên đến 3.2 KB. Ưu điểm là mọi Pokémon đều có thể được bắt và đặt tên mà không cần bất kỳ công cụ bên ngoài nào.
  • Chế độ Full: Nâng dung lượng lưu trữ lên đến 10.8 KB, nhưng yêu cầu sử dụng một công cụ chỉnh sửa tập tin lưu (save editor) để hoạt động.

Sự khác biệt giữa hai chế độ này nằm ở lượng dữ liệu mà người dùng có thể dễ dàng truy cập và thay đổi. Ví dụ, có 386 loài Pokémon trong Emerald, về mặt lý thuyết có thể cung cấp 8 bit dữ liệu. Tuy nhiên, chỉ có 202 loài có thể bắt được, và khi tính đến các Pokémon chỉ có thể bắt một lần hoặc nhận qua trứng, con số này còn giảm hơn nữa. Sau khi loại bỏ các Pokémon đặc biệt và tính đến sự tiện lợi, con số này giảm xuống còn bốn Pokémon riêng biệt, mỗi Pokémon cung cấp hai bit dữ liệu. Bốn Pokémon này bao gồm:

  • Poochyena
  • Whismur
  • Taillow
  • Nincada

Cả bốn Pokémon này đều có thể bắt được ở Tuyến đường 116 (Route 116), với tỷ lệ xuất hiện từ 20% trở lên. Chúng cũng có tỷ lệ giới tính đực hoặc cái như nhau khi gặp, điều này cung cấp thêm một bit dữ liệu ngoài hai bit đã có từ loài Pokémon.

Phương pháp này có thể không lưu trữ được nhiều dữ liệu, nhưng nó có nghĩa là một người chơi thực sự có thể dễ dàng đi bắt những Pokémon này, đặt tên và cho chúng giữ đúng vật phẩm để biểu thị dữ liệu thực. Về phần tên, tên Pokémon cung cấp 60 bit dữ liệu và sử dụng mọi ký tự tiếng Anh cùng hầu hết các ký hiệu. Khoảng trắng được loại trừ để dễ dàng nhập tên thủ công hơn. Cuối cùng, vật phẩm giữ (held items) cung cấp 5 bit dữ liệu, vì có 32 vật phẩm có thể mua rẻ trong game và đưa cho Pokémon giữ.

Tất cả những điều này mang lại các điểm dữ liệu sau:

  • Loài (Species): 2 bit
  • Tên (Name): 60 bit
  • Giới tính (Gender): 1 bit
  • Vật phẩm giữ (Item Held): 5 bit

Tổng cộng, mỗi Pokémon cung cấp 68 bit dữ liệu. Với 419 ô trống có sẵn (ô cuối cùng sẽ dùng để đệm), chúng ta có tổng cộng 28488 bit dữ liệu khả dụng, tương đương với 3.561 KB.

Quá Trình Mã Hóa File Thành “Đội Quân” Pokémon

Thực hiện thủ công đầy công phu

Có một tiện ích web đi kèm với mon-fs sẽ giúp bạn biến một tập tin thành các yêu cầu cụ thể về Pokémon: loài cần bắt, vật phẩm cần cho chúng giữ, và tên cần đặt. Bạn có thể lưu một tập tin “pc.json” để phác thảo các yêu cầu này, và tập tin này có thể được tải lên lại trang web đó để lấy lại tập tin đầu ra. Như bạn có thể thấy trong hình ảnh minh họa dưới đây, trang web đưa ra các yêu cầu như:

Giao diện website mon-fs hướng dẫn tạo Pokémon để mã hóa dữ liệu, hiển thị thông tin Pokémon cần thiết như tên, giới tính và vật phẩm giữ.Giao diện website mon-fs hướng dẫn tạo Pokémon để mã hóa dữ liệu, hiển thị thông tin Pokémon cần thiết như tên, giới tính và vật phẩm giữ.

  • Poochyena: Giới tính đực, không giữ vật phẩm, tên “baaaaaaaaa”
  • Nincada: Giới tính đực, giữ X Accuracy, tên “aaaaaaaaaa”
  • Poochyena: Giới tính đực, giữ Full Heal, tên “aaaaaaaaaa”
  • Nincada: Giới tính cái, giữ Awakening, tên “g6n?Gizsvr”
  • Whismur: Giới tính đực, không giữ vật phẩm, tên “pRh/vBaCaa”
  • Poochyena: Giới tính đực, giữ Revive, tên “aaaaaaiwg6”
  • Whismur: Giới tính cái, không giữ vật phẩm, tên “qBcxefviaa”

Vậy, giả sử bạn đã bắt được tất cả những Pokémon này, bước tiếp theo là gì? Làm thế nào để ai đó có thể lấy thông tin, chuyển cho người khác và người đó giải mã nó? Họ có thể sử dụng công cụ mon-fs đọc màn hình chụp, dùng OCR để phân tích và xuất ra tập tin pc.json, hoặc người dùng khác có thể tải tập tin lưu của bạn, nhập thủ công các chi tiết lên trang web và giải mã ngay tại đó.

Giao diện website mon-fs dùng để giải mã dữ liệu từ các Pokémon trong hộp PC, cho phép người dùng nhập thông tin Pokémon để khôi phục file.Giao diện website mon-fs dùng để giải mã dữ liệu từ các Pokémon trong hộp PC, cho phép người dùng nhập thông tin Pokémon để khôi phục file.

Dù bằng cách nào, bạn sẽ phải trải qua quá trình tái tạo tệp tin một cách công phu. Chưa kể đến việc đi bắt từng Pokémon cũng tốn khá nhiều thời gian, vì vậy đây không phải là một cách thực tế để truyền tải tệp tin cho người khác.

Có một số hạn chế được đặt ra để giúp “người bình thường” thực hiện điều này trong game với các công cụ có sẵn. Tuy nhiên, chế độ “Full” nâng cao giới hạn đáng kể. Ở chế độ này, dung lượng lưu trữ tăng lên 211 bit mỗi Pokémon, tương đương khoảng 11.05 KB. Tài liệu trên kho lưu trữ GitHub không nêu rõ lý do, nhưng trang web mon-fs cho biết các tệp dưới 10.8 KB được đảm bảo hoạt động. Điều này có thể liên quan đến các giá trị đệm (padding values), dù chúng tôi không chắc chắn.

Ứng Dụng Không Thực Tế, Nhưng Kiến Thức Vô Giá

Hình ảnh minh họa các Pokémon trong game Pokémon Emerald đã được tùy chỉnh thông số để chứa dữ liệu, cho thấy tính khả thi của kỹ thuật mon-fs.Hình ảnh minh họa các Pokémon trong game Pokémon Emerald đã được tùy chỉnh thông số để chứa dữ liệu, cho thấy tính khả thi của kỹ thuật mon-fs.

Chúng tôi đã thử nghiệm với một phiên bản mon-fs được xây dựng cục bộ để chèn Pokémon và đọc lại chúng từ tập tin lưu của game. Mặc dù quá trình chèn hoạt động, việc đọc lại dữ liệu lại không thành công. Chương trình không thể đọc luồng dữ liệu từ tập tin lưu, và chúng tôi cũng không thể sử dụng công cụ đọc màn hình chụp bằng OCR để chuyển đổi. Tuy nhiên, việc nhập thủ công trên trang web mon-fs vẫn hoạt động, và một người thực sự kiên trì muốn truyền tải tập tin qua Pokémon hoàn toàn có thể làm điều đó theo cách thủ công.

Dù dự án này chắc chắn không thực tế cho hầu hết mọi người, nó vẫn vô cùng thú vị. Bất kỳ trò chơi nào cho phép bất kỳ loại dữ liệu nào do người dùng kiểm soát đều có thể được sử dụng theo cách này. Chúng ta đã thấy các kỹ thuật tương tự cho phép thực thi mã tùy ý trong nhiều trò chơi trước đây, bao gồm cả Pokémon Diamond và Pearl. Đương nhiên, những kỹ thuật này phức tạp hơn đáng kể so với việc chỉ tạo ra một cấu trúc được nhận dạng từ dữ liệu người dùng và diễn giải nó từ bên ngoài giới hạn của trò chơi.

Các khối len nhiều màu sắc trong game Minecraft, minh họa ý tưởng lưu trữ dữ liệu bằng cách gán giá trị bit cho từng màu, tương tự như kỹ thuật trong Pokémon Emerald.Các khối len nhiều màu sắc trong game Minecraft, minh họa ý tưởng lưu trữ dữ liệu bằng cách gán giá trị bit cho từng màu, tương tự như kỹ thuật trong Pokémon Emerald.

Toàn bộ dự án này vừa điên rồ, vừa tuyệt vời, và nó có thể dạy cho bạn rất nhiều về cấu trúc dữ liệu và cách mọi thứ có thể trở thành một phần của cấu trúc dữ liệu nếu bạn có thể kiểm soát thứ tự và một số tham số của các mục được sử dụng để xây dựng mỗi “khối” dữ liệu. Để cung cấp một ví dụ khác dễ hình dung hơn, người ta có thể làm điều này trong một trò chơi như Minecraft. Có 16 màu len trong Minecraft, và bạn có thể ánh xạ 0-F vào các màu đó. log₂ của 16 cho ta 4 bit lưu trữ cho mỗi khối đơn. Với chỉ 100 khối, bạn có thể biểu thị 0.05 KB dữ liệu; không nhiều, nhưng đó là một khái niệm tương tự như lưu trữ dữ liệu trong Pokémon Emerald. Một khối len trắng có thể biểu thị 0000, len xám nhạt 0001, v.v.

Nếu bạn quan tâm đến việc thử nghiệm kỹ thuật độc đáo này, hãy truy cập kho lưu trữ mon-fs trên GitHub và xem qua trang web mon-fs. Cả hai sẽ hướng dẫn bạn cách thiết lập và cấu hình, đồng thời có thể khơi gợi cho bạn những ý tưởng về các nơi kỳ lạ khác mà bạn có thể lưu trữ dữ liệu, ẩn mình ngay trước mắt.

Related posts

Windows 25 Mod: Cá Nhân Hóa & Cải Thiện Giao Diện Windows 11

Administrator

Những Phần Mềm PC Tôi Vẫn Tin Dùng Dù Có Nhiều Lựa Chọn Hơn

Administrator

Vì sao Proton Drive vượt trội OneDrive về bảo mật và quyền riêng tư?

Administrator