Skip to content

Hướng Dẫn Thủ Thuật

  • Sample Page

Hướng Dẫn Thủ Thuật

  • Home » 
  • Thủ Thuật Máy Tính » 
  • Mon-fs: Khám phá cách lưu trữ dữ liệu ‘độc dị’ trong Pokémon Emerald

Mon-fs: Khám phá cách lưu trữ dữ liệu ‘độc dị’ trong Pokémon Emerald

By Administrator Tháng 8 23, 2025 0
Giao diện công cụ web mon-fs hiển thị danh sách Pokémon, tên, giới tính và vật phẩm cần thiết để mã hóa dữ liệu trong Pokémon Emerald.
Table of Contents

Pokémon Emerald là một tựa game tuyệt vời, gợi lên nhiều hoài niệm cho những người hâm mộ loạt game Pokémon cũ. Ngày nay, bối cảnh modding (chỉnh sửa game) của các phiên bản Pokémon cổ điển đã phát triển cực kỳ sôi động, với vô số bản mod do người hâm mộ tạo ra, kéo dài tuổi thọ của chúng hàng thập kỷ sau. Tuy nhiên, cộng đồng modding này cũng đã tìm ra một cách độc đáo để lưu trữ một tệp tin bên trong chính game Pokémon Emerald. Cụ thể, một tệp tin có kích thước lên tới 10.8 KB có thể được mã hóa và lưu trữ – một ý tưởng tưởng chừng điên rồ nhưng đã được chứng minh là khả thi!

Để dễ hình dung hơn, khi bạn mở một tệp trên máy tính của mình, dù là tài liệu văn bản, hình ảnh hay thậm chí là trang web này, bạn đang xem một tập hợp các cấu trúc dữ liệu mà máy tính của bạn biết cách diễn giải để hiển thị thông tin mong muốn. Trong trường hợp một trang web, bạn có thể dễ dàng thấy điều này bằng cách xem mã nguồn. Bạn sẽ thấy mã HTML mà trình duyệt biết cách diễn giải và hiển thị cho bạn, tương tự như cách máy tính biết đọc dữ liệu bên trong một tệp JPG để diễn giải và hiển thị một hình ảnh.

Khái quát hóa khái niệm đó, chúng ta có thể hiểu rằng thực tế bất cứ thứ gì đều có thể đóng vai trò là một “bộ chứa tệp”, miễn là có một cách thức có cấu trúc để dữ liệu có thể được lưu lại và sau đó được truy xuất trong tương lai. Vậy nên, việc lưu trữ dữ liệu trong Pokémon Emerald là hoàn toàn có thể… và tất cả là nhờ vào công cụ mon-fs, nơi dữ liệu của bạn sẽ được mã hóa thành chính các Pokémon. Quy trình này có thể chậm chạp và phức tạp, nhưng đó là một cách cực kỳ thú vị để giải thích cách dữ liệu được lưu trữ và làm thế nào hầu như bất cứ thứ gì cũng có thể được sử dụng để chứa dữ liệu.

Pokémon – Nơi lưu trữ dữ liệu đầy tiềm năng

Từng Pokémon chứa tới 68 bit dữ liệu như thế nào?

Hãy nhìn vào những hình ảnh minh họa về quá trình mã hóa một tệp vào bản lưu Emerald của tôi. Bản thân Pokémon, biệt danh của nó, giới tính, OT (Original Trainer), các loại ruy băng, quả cầu dùng để bắt nó, và điểm kinh nghiệm – tất cả đều là những giá trị mà người chơi có thể tác động, và đó chính xác là cách mon-fs hoạt động. Công cụ này có hai chế độ: “Full” và “Lite”.

  • Chế độ Lite: Một tệp tin có kích thước lên đến 3.2 KB có thể được lưu trữ trong game. Đặc biệt, 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: Một tệp tin có kích thước lên đến 10.8 KB có thể được lưu trữ. Tuy nhiên, chế độ này yêu cầu sử dụng một công cụ chỉnh sửa tệp 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í dụ, có 386 Pokémon trong Emerald, điều này lý thuyết có thể cho phép mã hóa 8 bit dữ liệu. Tuy nhiên, chỉ có 202 loài có thể bắt được, và nếu tính cả những 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 xuống. Sau khi loại bỏ tất cả những Pokémon đó và tính đến sự tiện lợi, con số này giảm xuống còn bốn loài Pokémon riêng biệt, cho phép lưu trữ hai bit dữ liệu. Bốn Pokémon này bao gồm:

  • Poochyena
  • Whismur
  • Taillow
  • Nincada

Cả bốn loài Pokémon này đều có thể bắt được trên Tuyến đường 116 (Route 116), và tất cả đều có 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, cung cấp thêm một bit dữ liệu ngoài hai bit được cung cấp bởi chính bốn loài Pokémon này.

Cách tiếp cận này có thể đồng nghĩa với việc bạn không thể lưu trữ nhiều dữ liệu hơn, nhưng nó lại có nghĩa là việc một người bình thường thực sự đi bắt những Pokémon này, đặt tên và cho chúng giữ vật phẩm đúng cách để đại diện cho dữ liệu trở nên dễ dàng hơn đáng kể. Về phần tên, thuộc tính này 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óm lại, chúng ta có các điểm dữ liệu sau cho mỗi Pokémon:

  • 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, điều này cung cấp 68 bit cho mỗi Pokémon. Với 419 ô trống có sẵn (ô cuối cùng sẽ cần được sử dụng để đệm dữ liệu), chúng ta có tổng cộng 28488 bit sử dụng được, tương đương với 3.561 KB.

Quy trình mã hóa file thành… dàn Pokémon

Thực hiện thủ công với công cụ mon-fs web

Giao diện công cụ web mon-fs hiển thị danh sách Pokémon, tên, giới tính và vật phẩm cần thiết để mã hóa dữ liệu trong Pokémon Emerald.Giao diện công cụ web mon-fs hiển thị danh sách Pokémon, tên, giới tính và vật phẩm cần thiết để mã hóa dữ liệu trong Pokémon Emerald.

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

  • 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”

Bây giờ, giả sử tôi bắt được tất cả những Pokémon này, điều gì sẽ xảy ra tiếp theo? Làm thế nào một người có thể lấy thông tin, đưa nó cho người khác, và để họ giải mã nó? Họ có thể sử dụng công cụ mon-fs mà bạn cung cấp ảnh chụp màn hình, sử dụng công nghệ nhận dạng ký tự quang học (OCR) và xuất ra tệp pc.json trở lại… hoặc người dùng khác có thể tải tệp lưu của bạn lên, nhập thủ công các chi tiết trên trang web và giải mã tại chỗ.

Màn hình giải mã trên website mon-fs, hiển thị dữ liệu được tái tạo từ thông tin Pokémon đã nhập, minh họa khả năng đọc file từ game.Màn hình giải mã trên website mon-fs, hiển thị dữ liệu được tái tạo từ thông tin Pokémon đã nhập, minh họa khả năng đọc file từ game.

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

Có một số hạn chế được đặt ra ở đây để giúp một người “bình thường” dễ dà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 cho 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 chế độ “Full” trên 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) một lần nữa, mặc dù tôi không chắc chắn.

Giá trị của Mon-fs: Không thực dụng, nhưng cực kỳ thú vị!

Tôi không thể tưởng tượng việc dùng Pokémon Emerald để chia sẻ tệp tin

Giao diện PC Box trong game Pokémon Emerald, hiển thị các Pokémon đã được công cụ mon-fs 'inject' vào để lưu trữ dữ liệu.Giao diện PC Box trong game Pokémon Emerald, hiển thị các Pokémon đã được công cụ mon-fs 'inject' vào để lưu trữ dữ liệu.

Tôi đã thử nghiệm với một bản mon-fs được xây dựng cục bộ để chèn Pokémon và đọc chúng trở lại từ tệp lưu của game, và trong khi việc chèn hoạt động, việc đọc lại thì không. Chương trình đã thất bại trong việc đọc luồng dữ liệu từ tệp lưu, và tôi cũng không thể làm cho công cụ đọc ảnh chụp màn hình bằng OCR và chuyển đổi chúng hoạt động được. 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ự tận tâm với việc truyền tệp qua Pokémon có thể làm điều đó một cách thủ công.

Mặc dù dự án đặc biệt này chắc chắn không thực tế đối với hầu hết mọi người, nhưng nó vẫn là một dự án 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, và chúng ta đã thấy các kỹ thuật tương tự cho phép thực thi mã tùy ý (arbitrary code execution) 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 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.

Ví dụ về các khối len với nhiều màu sắc trong Minecraft, minh họa cách mỗi màu có thể đại diện cho một giá trị bit dữ liệu.Ví dụ về các khối len với nhiều màu sắc trong Minecraft, minh họa cách mỗi màu có thể đại diện cho một giá trị bit dữ liệu.

Toàn bộ dự án này vừa điên rồ, vừa thú vị, và nó có thể dạy cho bạn rất nhiều về cấu trúc dữ liệu và cách bất cứ thứ gì cũng có thể là 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. Để kết lại bằng một ví dụ 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 khác nhau trong Minecraft, và bạn có thể ánh xạ 0-F (hệ thập lục phân) cho những màu đó, với log cơ số 2 của 16 nghĩa là chúng ta sẽ nhận được 4 bit lưu trữ cho mỗi khối. Chỉ với 100 khối, bạn có thể đại diện cho 0.05 KB dữ liệu; con số này không nhiều, nhưng đó là một khái niệm tương tự như việc lưu trữ dữ liệu trong Pokémon Emerald. Một khối len trắng có thể đại diện cho 0000, len xám nhạt 0001, v.v.

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


Share
facebookShare on FacebooktwitterShare on TwitterpinterestShare on Pinterest
linkedinShare on LinkedinvkShare on VkredditShare on ReddittumblrShare on TumblrviadeoShare on ViadeobufferShare on BufferpocketShare on PocketwhatsappShare on WhatsappviberShare on ViberemailShare on EmailskypeShare on SkypediggShare on DiggmyspaceShare on MyspacebloggerShare on Blogger YahooMailShare on Yahoo mailtelegramShare on TelegramMessengerShare on Facebook Messenger gmailShare on GmailamazonShare on AmazonSMSShare on SMS
Post navigation
Previous post

Nintendo Switch 2: Liệu có đủ sức chinh phục trái tim game thủ Việt?

Next post

Samsung 990 Evo: Hiệu Năng PCIe 5.0 Giá Phải Chăng Cho Mọi Nâng Cấp

Administrator

Related Posts

Categories Thủ Thuật Máy Tính Mon-fs: Khám phá cách lưu trữ dữ liệu ‘độc dị’ trong Pokémon Emerald

Google NotebookLM: Công Cụ AI Đột Phá Giúp Bạn Học Tập & Nghiên Cứu Hiệu Quả

Categories Thủ Thuật Máy Tính Mon-fs: Khám phá cách lưu trữ dữ liệu ‘độc dị’ trong Pokémon Emerald

Nâng Cấp GPU Mới Có Cần Kéo Theo Nâng Cấp CPU? Giải Mã “Nghẽn Cổ Chai”

Categories Thủ Thuật Máy Tính Mon-fs: Khám phá cách lưu trữ dữ liệu ‘độc dị’ trong Pokémon Emerald

DiskCryptor: Giải Pháp Mã Hóa Ổ Đĩa Hoàn Hảo Bảo Vệ Dữ Liệu Cá Nhân

Leave a Comment Hủy

Recent Posts

  • Google NotebookLM: Công Cụ AI Đột Phá Giúp Bạn Học Tập & Nghiên Cứu Hiệu Quả
  • Nâng Cấp GPU Mới Có Cần Kéo Theo Nâng Cấp CPU? Giải Mã “Nghẽn Cổ Chai”
  • Samsung Galaxy Book 5 Pro: Laptop AI Màn Hình AMOLED Đẳng Cấp, Hiệu Năng Vượt Trội
  • Cập Nhật Excel Tháng 6/2025: Những Tính Năng Mới Nâng Tầm Trải Nghiệm Làm Việc
  • Surface Pro 11: Sức Mạnh Snapdragon X Elite & Màn Hình OLED Tuyệt Đỉnh Giá Cực Hời

Recent Comments

Không có bình luận nào để hiển thị.
Copyright © 2025 Hướng Dẫn Thủ Thuật - Powered by Nevothemes.
Offcanvas
Offcanvas

  • Lost your password ?