PaiN_Agent
Youtube Master Race
Đầu tiên xin lỗi dark_dragons vì đã trễ hẹn, cũng vì thi đại học xong bận đủ thứ, đến giờ vẫn đang đợi điểm nên dành thời gian rỗi post bài. Mọi người thông cảm :)
Mình định nói về RNG nhưng vấn đề này có quá nhiều lĩnh vực liên quan chắc phải dùng clip để mô tả thì mới dễ hiểu, vậy nên sẽ tạm chưa post bài về RNG, xin phép được post bài về pokemon data. Xin phép bắt đầu luôn nhé:
Bài viết thuộc Gen III, có vẻ lỗi thời nhưng cũng mong đóng góp những gì nghiên cứu trong hè :)
Forum đã có bài viết chi tiết về PID (Personality Value) của dark_dragons nên mình không nhắc lại. Nếu ai từng đọc thì chắc hẳn sẽ nắm được phần nào về PID. Để hiểu rõ hơn về PID, chúng ta cùng tìm hiểu cách khám phá "chỉ số" PID của pokemon và cách game tạo/lưu dữ liệu về 1 pokemon.
Trong giả lập VBA, chọn Tools > Memory viewer..., một bảng toàn mã số hiện ra. Trông rắc rối như vậy nhưng lại rất hữu ích đặc biệt với hacker. Toàn bộ thông tin đc lưu ở đây. Nếu bạn vô tình chỉnh sửa 1 kí tự có thể gây ra hậu quả khủng khiếp như đơ game, pokemon biến thành bad egg... Vì thế nên cẩn thận khi dùng memory viewer.
Chúng ta đều biết trong pokemon có 2 nơi để "cất giữ" pokemon: party và PC, (Daycare cũng có thể kể đến nhưng không phổ biến lắm). Bạn có bao giờ tự hỏi tại sao cất pokemon vào PC thì nó lại trở về bình thường như vừa được hồi ở pokemon center? Câu trả lời chính là vì cách game lưu dữ liệu của pokemon trong party và PC khác nhau. Đối với PC, dữ liệu về pokemon không có phần stats và status (Poison, par, sleep...) còn pokemon trong party có đầy đủ cả. Tổng dữ liệu cho 1 pokemon trong party là 100 bytes còn trong PC là 80 bytes. 100 bytes này được lưu trong memory viewer, address khác nhau với mỗi bản: FR/LG; R/S; Emerald. Sau đây là các address tương ứng với party slot (vị trí của PC sẽ cập nhật sau):
---------- Post added at 16:33 ---------- Previous post was at 15:44 ----------
Tất cả dữ liệu lưu dưới hệ Hex (khác với hệ thập phân quen thuộc).
Trong hình trên, phần trong khung màu đỏ chính là PID, nghĩa là PID sẽ nằm ở đầu tiên trong phần lưu thông tin về pokemon. Các thông tin lưu như sau:
Xin mod đừng khóa topic để tối viết nốt
Mình định nói về RNG nhưng vấn đề này có quá nhiều lĩnh vực liên quan chắc phải dùng clip để mô tả thì mới dễ hiểu, vậy nên sẽ tạm chưa post bài về RNG, xin phép được post bài về pokemon data. Xin phép bắt đầu luôn nhé:
Bài viết thuộc Gen III, có vẻ lỗi thời nhưng cũng mong đóng góp những gì nghiên cứu trong hè :)
POKEMON DATA
Forum đã có bài viết chi tiết về PID (Personality Value) của dark_dragons nên mình không nhắc lại. Nếu ai từng đọc thì chắc hẳn sẽ nắm được phần nào về PID. Để hiểu rõ hơn về PID, chúng ta cùng tìm hiểu cách khám phá "chỉ số" PID của pokemon và cách game tạo/lưu dữ liệu về 1 pokemon.
MEMORY VIEWER - VBA
Trong giả lập VBA, chọn Tools > Memory viewer..., một bảng toàn mã số hiện ra. Trông rắc rối như vậy nhưng lại rất hữu ích đặc biệt với hacker. Toàn bộ thông tin đc lưu ở đây. Nếu bạn vô tình chỉnh sửa 1 kí tự có thể gây ra hậu quả khủng khiếp như đơ game, pokemon biến thành bad egg... Vì thế nên cẩn thận khi dùng memory viewer.
Chúng ta đều biết trong pokemon có 2 nơi để "cất giữ" pokemon: party và PC, (Daycare cũng có thể kể đến nhưng không phổ biến lắm). Bạn có bao giờ tự hỏi tại sao cất pokemon vào PC thì nó lại trở về bình thường như vừa được hồi ở pokemon center? Câu trả lời chính là vì cách game lưu dữ liệu của pokemon trong party và PC khác nhau. Đối với PC, dữ liệu về pokemon không có phần stats và status (Poison, par, sleep...) còn pokemon trong party có đầy đủ cả. Tổng dữ liệu cho 1 pokemon trong party là 100 bytes còn trong PC là 80 bytes. 100 bytes này được lưu trong memory viewer, address khác nhau với mỗi bản: FR/LG; R/S; Emerald. Sau đây là các address tương ứng với party slot (vị trí của PC sẽ cập nhật sau):
[SPOIL]Emerald
Party Slot 1 - 020244EC
Party Slot 2 - 02024550
Party Slot 3 - 020245B4
Party Slot 4 - 02024618
Party Slot 5 - 0202467C
Party Slot 6 - 020246E0
Ruby/Sapphire
Party Slot 1 - 03004360
Party Slot 2 - 030043C4
Party Slot 3 - 03004428
Party Slot 4 - 0300448C
Party Slot 5 - 030044F0
Party Slot 6 - 03004554
Fire Red/Leaf Green
Party Slot 1 - 02024284
Party Slot 2 - 020242E8
Party Slot 3 - 0202434C
Party Slot 4 - 020243B0
Party Slot 5 - 02024414
Party Slot 6 - 02024478
PC SLOT 1 Box ? - 0202A644
[/SPOIL]
---------- Post added at 16:33 ---------- Previous post was at 15:44 ----------
100 BYTES POKEMON DATA
Đây là 1 hình ảnh về dữ liệu lưu trong Memory Viewer. Metagross ở party slot 2 trong pokemon Emerald sẽ có dữ liệu tương ứng lưu ở 0x02024550. Ở chế độ view 32-bit, cứ mỗi cụm XXXXYYZZ là 1 dword = 4 byte, cụm XXXX và YYZZ là 1 word = 2 byte, cụm XX, YY, ZZ là 1 byte. Nếu để chế độ view là 16-bit cụm XXXXYYZZ sẽ chuyển thành YYZZ XXXX và ở 8-bit là ZZ YY XX XX. Thứ tự sắp xếp được đảo lại[SPOIL]![]()
[/SPOIL]
[SPOIL]
byte 1: XX
byte 2: YY
byte 3: ZZ
byte 4: TT
8-bit view: XX YY ZZ TT
16-bit view: YYZZ TTZZ
32-bit view: TTZZYYXX
[/SPOIL]
Tất cả dữ liệu lưu dưới hệ Hex (khác với hệ thập phân quen thuộc).
Trong hình trên, phần trong khung màu đỏ chính là PID, nghĩa là PID sẽ nằm ở đầu tiên trong phần lưu thông tin về pokemon. Các thông tin lưu như sau:
[SPOIL]![]()
Đếm từ trái qua phải, từ trên xuống dưới, byte đầu tiên là byte 0:
Byte 0 đến Byte 3: PID (giá trị bằng 1 dword).
Byte 4 đến Byte 5: Trainer ID (giá trị bằng 1 word).
Byte 6 đến Byte 7: Secret ID (giá trị bằng 1 word).
Byte 8 đến Byte 17: Tên pokemon, mỗi kí tự là 1 byte, thứ tự kí tự từ trái qua phải (kí tự 1: Byte 8, kí tự 2: Byte 9,...).
Byte 18 đến Byte 19: Game language (giá trị bằng 1 word): English, Japanese,...
Byte 20 đến Byte 26: Trainer name, tương tự tên pokemon.
Byte 27: thông tin về mark (giá trị bằng 1 byte), các biểu tượng đánh dấu: trái tim, vuông, tròn, tam giác.
Byte 28 đến Byte 29: Checksum, quan trọng vô cùng, nếu sai sẽ biến pokemon thành bad egg.
Byte 30 đến Byte 31: luôn là 00 00
Byte 32 đến Byte 79: dữ liệu về pokemon, phần dữ liệu chính được chia thành 4 phần nhỏ
Phần chỉ có trong Party
Byte 80 đến Byte 83: Status (giá trị bằng 1 dword): thông tin poison, par...
Byte 84: Level
Byte 85: Luôn là FF (trong bulbapedia nói phần này liên quan đến pokerus nhưng theo mình thì không phải???)
Byte 86 đến Byte 87: HP hiện tại
Byte 88 đến Byte 89: Tổng HP
Byte 90 đến Byte 91: Attack stat
Byte 92 đến Byte 93: Defence stat
Byte 94 đến Byte 95: Speed stat
Byte 96 đến Byte 97: Special Attack stat
Byte 98 đến Byte 99: Special Defence stat
[/SPOIL]
Xin mod đừng khóa topic để tối viết nốt