The PlayStation 2 Codehacking Guide

Thảo luận trong 'Hộp Lưu Trữ' bắt đầu bởi MH-Kyu, 22/8/05.

Trạng thái chủ đề:
Không mở trả lời sau này.
  1. MH-Kyu

    MH-Kyu VGI Member

    Tham gia ngày:
    6/8/03
    Bài viết:
    3,567
    Nơi ở:
    Pride Rock
    Codehacking là gì?
    Codehacking là việc hack, tìm và giải mã code cho các game PS2 nhằm mục đính chính là cheat chúng. Những ai có PS2 hẳn cũng phải nghe nói đến gameshark, codebreaker... rồi chứ (nếu bạn thậm chí không biết đấy là gì thì bạn có thể coi như mình chưa đọc guide này ^^)? Đùa chút thôi, việc sử dụng chúng khá đơn giản nhưng việc tìm code đúng thì lại khá khó. Nếu bạn có điều kiện, tại sao không tự hack lấy chúng để dùng nhỉ?

    Được rồi, tôi cần những gì để bắt đầu việc hack code?

    Bạn bắt buộc phải có 3 thứ sau:
    1. Một ổ DVD trên máy tính của bạn
    2. Đĩa game PS2.
    3. Một vài chương trình như ps2dis, maxcovert... mà bạn có thể download ở đây.

    Ngoài ra bạn còn cần một chút kiên nhẫn và sẽ rất tuyệt nếu bạn có một chút hiểu biết về Hex, một cáp nối PS2 với PC như X- Link (tuy nhiên không có cũng không có vấn đề gì).

    Bước đầu tiên là tìm file elf trong đĩa DVD game của bạn. File elf là những file có tên hoặc đuôi là Slus/Scus/Sles/slps/pbpx/elf... Nếu bạn tìm được bất cứ file nào như vậy hãy copy chúng vào máy.

    OK! Bây giờ chúng ta hãy bắt đầu những bước đầu tiên vào thế giới codehacking.
     
  2. MH-Kyu

    MH-Kyu VGI Member

    Tham gia ngày:
    6/8/03
    Bài viết:
    3,567
    Nơi ở:
    Pride Rock
    Mastercode
    Mastercode hay còn gọi là Enable Code hay Must Be On. Đây là code quan trọng nhất vì không có nó tất cả các code khác như bất tử máu, đạn... đều không hoạt động được. Có rất rất nhiều cách để tạo Mastercode, nhưng trước tiên cần phải biết có 2 dãy số/giá trị chính để tìm Mastercode (trong dạng Raw/Hex).

    1. : 0000000E
    2. : 000001FD

    Chẳng hạn chúng ta có một Mastercode như thế này: F0100008 000001FD
    Vậy F0100008 là địa chỉ trong khi 000001FD là dãy số/giá trị. Got it?

    Chú ý:
    tất cả code bạn tìm được đều thuộc dạng Raw/Hex vì vậy nếu muốn dùng chúng bằng một cheat device như Action Replay 2 thì bạn phải chuyển đổi chúng (hướng dẫn phần này sẽ sớm được hoàn thành).

    Trước tiên bạn cần phải mở file elf trong đĩa DVD game của mình. Các file elf đó có thể là:
    SLES_###.##
    SLUS_###.##
    SCES_###.##
    SCUS_###.##
    SCPS_###.##
    SLPS_###.##
    PBPX_###.##
    (# là các con số ngẫu nhiên, ví dụ như Slus_202.65)

    Phương pháp 1

    Vậy là bạn đã mở file elf bằng ps2dis. Bây giờ mở Edit, chọn "Jump to Labels" và tìm "Entrypoint" (và nhớ bỏ dấu "" đi). Bây giờ chúng ta sẽ thấy kết quả như thế này:
    [​IMG]
    Địa chỉ xuất phát cho game này là 00100008 (phần dãy số/giá trị đằng sau địa chỉ không quan trọng).

    Một Mastercode bình thường bắt đầu bằng chữ F vậy ta chuyển số đầu tiên của địa chỉ thành F và được F0100008
    Bây giờ chúng ta chỉ cần dùng 1 trong 2 dãy số/giá trị chính ở trên kết hợp với địa chỉ mới tìm được để tạo một Mastercode hoàn chỉnh. Kết quả là:
    F0100008 0000000E hoặc F0100008 000001FD

    Chú ý:
    Actionreplay/Gameshark không sử dụng "Entrypoint" cho Enable/Mastercode. Entrypoint dành riêng cho Codebreaker/Xploder!

    Phương pháp 2
    Game ví dụ: GTC Africa
    Trước tiên chúng ta mở file elf bằng ps2dis. Mở Edit, chọn "Jump to Labels" và thay vì "Entrypoint" thì ta tìm "memcpy" (nhớ bỏ dấu "" trước khi tìm).
    [​IMG]
    Và kết quả là:
    [​IMG]
    Vậy địa chỉ là 0011E620. Tuy nhiên đây chưa phải địa chỉ dùng để tô Mastercode. Ở địa chỉ này nhấn Space + F3 để bắt đầu Invoke Analyzer (bạn có thể mở nó ở phần Analyzer). Nhấn F3 đến khi tìm được thanh địa chỉ "scepadread" ở khu vực trên hoặc "scepadgetstate" ở khu vực dưới thanh địa chỉ "memcpy".
    ....................
    OK, vậy ta tìm được địa chỉ là "00142F8C" cho Mastercode. Về phần dãy số/giá trị ta có thể dùng 000001FD hoặc 0000000E. Nhưng ta có thể làm một Mastercode tốt hơn. Chúng ta chỉ việc +3 vào phần địa chỉ để tạo thành dãy số/giá trị:
    00142F8C + 3 = 00142F8F (nếu không có kinh nghiệm về Hex, bạn có thể dùng phần tính Hex trong Specific của chương trình Calculator trong Windows.
    Vậy kết quả cuối cùng là F0142F8C 00142F8F
    Chú ý: Với dạng Mastercode này bạn có thể dùng với tất cả cheat device như gameshark, codebreaker hay action replay.

    Phương pháp 3
    Game ví dụ: vẫn là GTC Africa.
    Phương pháp này là sự kết hợp giữa Entrypoint và memcpy + 3. Chúng ta dùng Entrypoint cho phần địa chỉ và Memcpy + 3 cho phần dãy số/giá trị.
    Như ở phương pháp 1 ta tìm được phần địa chỉ (Entrypoint) là F0100008. Ở phương pháp 2 ta tìm được phần dãy số/giá trị (memcpy) là 00142F8F. Kết hợp chúng lại ta được kết quả là F0100008 00142F8F.
    Chú ý: dạng Mastercode này chỉ có tác dụng cho Codebreaker và Xploder vì nó dùng Entrypoint Enabler.

    Phương pháp 4
    Phương pháp này dùng khi bạn không tìm được một số nhãn như Entrypoint hay Memcpy trong file elf. Ta có thể dùng tất cả 3 Jal đầu tiên trong thanh địa chỉ, chúng gọi là Main-Jals. Nếu bạn có 1 trong các Jal này thì chỉ việc đặt 1 rtrong 2 dãy số/giá trị là 0000000E hoặc 000001FD để tạo thành Mastercode (và đừng quên chỉnh số đầu tiên của địa chỉ thành F).
    Đây là công thức:
    Main-Jal (địa chỉ) + 0000000E/000001FD (dãy số/giá trị)
    Kinh nghiệm: Sẽ có lúc bạn không tìm thấy memcpy trong phần "Jump to Labels". Đừng lo, memcpy thường nằm ở dãy số 8e060060. Mở Edit, chọn "Find pattern" và điền 8e060060 vào (nhớ chọn mục As hex string). Ý quên, bạn phải chuyển nó sang dạng 8 Bytes. Vậy đưa 2 giá trị đầu xuống cuối và được 6000068e.
    Game ví dụ: Final Fantasy X
    002de288 8e060060 lw a2 $0060(s0) ----> Kết quả sau khi tìm 8e060060. Đây chính là memcpy.

    Làm các bước như trong phương pháp 2 ta được Mastercode là F02DE28C 002DE28F.

    Phương pháp hack Mastercode với Multi-Elf (cho CB/XP)

    Game ví dụ: 007 Nightfire
    Multi-Elf có nghĩa là nhiều file elf. Chẳng hạn với game này bạn sẽ thấy có các file:
    Slus_202.65
    action.elf
    driving.elf
    movie.elf
    Bây giờ ta sẽ dùng phương pháp 2 tìm địa chỉ với "memcpy" ở từng file (nhớ đừng +3 vào).

    action.elf
    0034539C 0C04EC72

    driving.elf
    00277E24 0C090ABB

    movie.elf
    00133734 0C049877

    slus 202.65 (riêng với file này nhớ +1 vào địa chỉ memcpy)
    01F00008 - Entrypoint
    01F000CC - Main Jal

    "memcpy"
    01F0976C (01F0976B)

    Bây giờ đặt Entrypoint và Memcpy + 1 cùng với nhau và chuyển số đầu tiên thành F. Ta được F1F00008 01F0976B.
    Kết hợp với các file elf trên ta có:
    F1F00008 01F0976B
    0034539C 0C04EC72 < action.elf
    00277E24 0C090ABB < driving.elf
    00133734 0C049877 < movie.elf

    Thay vì chuyển các số đầu tiên của các file elf thành F, ta chuyển thành 9:
    F1F00008 01F0976B
    9034539C 0C04EC72
    90277E24 0C090ABB
    90133734 0C049877
    Đây là kết quả cuối cùng! Enjoy!

    Pattern
    Đây là một phần nâng cao của Mastercode, vì vậy bạn có thể không cần biết đến nó cũng được. Nó khá hữu ích khi bạn chưa bao giờ gặp những game không có kí hiệu hoặc tìm memcpy nhanh hơn. Lưu ý một điều là tắt Caps Lock trước khi copy - paste các mẫu này. Chúng sẽ đưa bạn trực tiếp đến dòng địa chỉ để tạo Mastercode.

    -=-scePadRead-=-
    Cách 1
    jal (MEMCPY)
    0200282d daddu a1, s0, zero
    8e020060 lw v0, $0060(s0)
    Pattern là 2d2800026000028e

    Cách 2
    jal (MEMCPY)
    0200282d daddu a1, s0, zero
    24030001 addiu v1, zero, $0001
    Pattern là 2d28000201220324

    Cách 3
    jal (MEMCPY)
    0220282d daddu a1, s1, zero
    24030001 addiu v1, zero, $0001
    Pattern là 2d28200201000324

    Cách 4
    jal (MEMCPY)
    24a50008 addiu a1, a1, $0008
    8e220000 lw v0, $0000(s1)
    Pattern là 8000a5240000228e

    -=-scePad2Read-=-
    Cách 1
    jal (MEMCPY)
    0240202d daddu a0, s2, zero
    24030330 addiu v1, zero, $0330
    Pattern là 2d20400230030324

    Cách 2
    jal (MEMCPY)
    0240202d daddu a0, s2, zero
    24030334 addiu v1, zero, $0334
    Pattern là 2d20400234030324

    Mastercode cho AR2, ARMAX
    Nếu bạn dùng Action Replay như AR2, Action Replay Max thì chắc bạn thường gặp Mastercode dài dằng dặc? Đó là vì file DNAS280.img ở trong đĩa. Vậy ta cần phải biết cách tìm Mastercode trong trường hợp này.

    1. Đầu tiên hãy chắc rằng file DNAS280.img có nằm trong đĩa game của bạn. Nếu bạn tìm thấy, hãy tìm file IOPRP280.IMG. Chúng thường nằm trong cùng một thư mục, nhưng thỉnh thoảng thì không như thế.

    2. Mở file bằng ps2dis và tìm nhãn (label) như "cdrom0:IOPDNAS280.IMG;1" (không có dấu ""). Tên của nhãn tuỳ vào vị trí của file DNAS280.img. Ở đây ta lấy ví dụ với game Burnout 3: Takedown SLUS_21050 (file DNAS280.img nằm trong thư mục IOP).

    3. Thay đổi từ các địa chỉ của các giá trị là DNAS như các code dưới:
    004B80FC 52504F49 IOPR
    004B8100 30383250 P280
    004B8104 474D492E .IMG
    004B8108 0000313B ;1
    Với dạng Action Replay 2 thì đổi 2 số đầu thành 20, còn với Action Replay Max thì đổi 2 số đầu thành 04.

    4. Nguyên tắc ở đây là đổi tên chuỗi label của file DNAS280.img với IOPRP280.img. Sẽ dễ dàng hơn nếu 2 file này nằm cùng một thư mục.

    5. Vậy cuối cùng Mastercode của game này là

    Action Replay 2 v1/v2
    F02158E8 002158EB (dòng này bạn phải tự tìm bằng 1 trong 4 phương pháp đã nói ở trên)
    204B80FC 52504F49
    204B8100 30383250
    204B8104 474D492E
    204B8108 0000313B

    Action Replay Max/EVO
    C42158E8 0003FF00 (dòng này bạn phải tự tìm bằng 1 trong 4 phương pháp đã nói ở trên)
    044B80FC 52504F49
    044B8100 30383250
    044B8104 474D492E
    044B8108 0000313B

    6. Chú ý:

    a. Nếu 2 file DNAS280.img và IOPRP280.img không nằm cùng một thư mục thì hãy thay đổi chuỗi label theo cách đầy đủ. Ví dụ:
    Resident Evil Outbreak SLUS_20765
    "cdrom0:IOPMODULESDNAS280.IMG;1"
    Mastercode là:
    F01001E8 0000000E
    20231A48 5547544E NTGU
    20231A4C 4D5C3249 I2M
    20231A50 4C55444F ODUL
    20231A54 495C5345 ESI
    20231A58 5052504F OPRP
    20231A5C 2E303832 280.
    20231A60 00474D49 IMG

    b. Phương pháp này chỉ dành cho Action Replay.

    c. Phương pháp này dành cho DNAS280.img, nếu bạn dùng nó cho DNAS300.img thì phải làm theo cách khác.

    d. Nếu không có đủ địa chỉ để sửa đổi, hãy thử sửa đổi địa chỉ của "cdrom0:IOPDNAS280.IMG;1". Ví dụ:
    Biohazard Outbreak File #2 SLPM_65692
    "cdrom0:MODULESDNAS280.IMG;1"

    Mastercode là:
    F0100208 000001FD
    201AAF88 2484DA78
    2023DA78 6F726463 cdro
    2023DA7C 5C3A306D m0:
    2023DA80 5547544E NTGU
    2023DA84 4D5C3249 I2M
    2023DA88 4C55444F ODUL
    2023DA8C 495C5345 ESI
    2023DA90 5052504F OPRP
     
  3. MH-Kyu

    MH-Kyu VGI Member

    Tham gia ngày:
    6/8/03
    Bài viết:
    3,567
    Nơi ở:
    Pride Rock
    Codehacking
    Trước hết bạn cần phải biết code mà chúng ta đang nói ở đây thuộc dạng HEX (đã được giải mã) và nó là dạng chuẩn. Code này dùng được cho XP2 nhưng nếu bạn muốn dùng cho AR2 thì cần phải encrypt (viết thành mã). Tuy nhiên việc encrypt code HEX sẽ được đề cập đến trong bài Hướng dẫn chuyển đổi code.

    E hèm, nói lại một chút về code HEX, nó hơi khác so với Mastercode và được chia ra làm 3 phần thế này:
    “Lệnh“ - Hàng lệnh.
    “Địa chỉ“ - Địa chỉ. Đây là cốt lõi để bạn tìm ra code và công dụng của nó (bất tử máu, unlock hết đồ...).
    “Giá trị/Dãy số“ - Cùng với địa chỉ nó mô tả code hoạt động như thế nào.

    Ta kí hiệu:
    C = Lệnh
    A = Địa chỉ
    D = Dãy số
    Và đây là cấu trúc: CAAAAAAA DDDDDDDD

    Ví dụ: 2027A569 FFFFFFFF <- đây là một code HEX bình thường

    Cũng như Mastercode bạn phải tìm file elf và dùng PS2Dis để mở nó. Các file elf đã nói ở trên rồi, bây giờ ta sẽ đi vào việc chính - tạo code. Nhưng bạn cần phải biết việc này đòi hỏi sự kiên nhẫn và thời gian. Nhưng nếu bạn có điều kiện thực tập, chắc chắn bạn sẽ sớm thành thạo thôi. Lưu ý là đọc kĩ và trước khi thử code nhớ tìm Mastercode của game đó trước.

    Hacking với label (nhãn)
    Nhãn ở đây là nhãn hiệu chứ không phải quả nhãn nhé. Đây là cách dễ nhất và nhanh nhất để tạo code.
    Game ví dụ: Grand Theft Auto 3.
    Trước tiên ta mở file elf, sau đó vào Analyzer và chọn Invoke Analyzer để phân tích file elf này. OK, phân tích đã xong bây giờ ta bắt đầu tìm xem có label nào đáng chú ý không.
    OK, ta thấy một label là RespraysAreFree_8CGarages (dịch ra tiếng Việt là sơn xe miễn phí ở gara). Click lên label và nó đưa ta đến thanh địa chỉ.
    [​IMG]
    Địa chỉ là 00418490 00000000

    Bây giờ ta thay đổi phần dãy số một chút (đừng thay đổi địa chỉ):
    00418490 00000000 --> Không có gì xảy ra
    00418490 00000001 --> Có tác dụng: sơn xe ở gara miễn phí
    00418490 00000002 --> Treo máy

    Vậy code cuối cùng là 00418490 00000001 (và nhớ rằng đây là code HEX và dùng được trên Xploder 2, nếu bạn muốn dùng nó cho AR2 thì phải encrypt trước khi dùng).
    Bạn thắc mắc tại sao hàng lệnh lại là 0 chứ không phải 1 hay 2 phải không? Phần hàng lệnh phụ thuộc vào dãy số.

    Nếu dãy số ít hơn hoặc bằng 000000FF, hàng lệnh sẽ là 0.
    Nếu dãy số ít hơn hoặc bằng 0000FFFF, hàng lệnh sẽ là 1.
    Nếu dãy số ít hơn hoặc bằng FFFFFFFF, hàng lệnh sẽ là 2.
    Ta thấy địa chỉ ban đầu là 00418490 00000000 có dãy số là 00000000 < 000000FF, vậy hàng lệnh là 0.

    Để hiểu rõ hơn bạn hãy xem ví dụ này (game là Final Fantasy X bản PAL):

    Tidus MAX HP (Tối đa HP của Tidus)
    1031EAB8 0000FFFF
    1031EAC0 0000FFFF

    Code này dùng cho Xploder 2. Hàng lệnh của code là 1, vì vậy giá trị tối đa của dãy số là 0000FFFF. Ở dạng số FFFF tương đương với 65535 (bạn có thể dùng Calculator trong Windows để tính). Nhưng những ai chơi FFX đều biết số HP trong FFX tối đa là 99999. Vậy ta chuyển hàng lệnh thành 2 và kết hợp với phần địa chỉ thì sẽ như thế này:
    2031EAB8
    2031EAC0


    Giới hạn dãy số là FFFFFFFF, tương đương với 4294967295 ở dạng số (có vẻ thừa thãi nhỉ?). Tuy nhiên ta không thể nâng mức HP lên từng đó được mà chỉ đến mức 99999 thôi. 99999 chuyển sang dạng HEX sẽ là 1869F. Vậy phần dãy số sẽ là 0001869F.

    Kết hợp hàng lệnh, địa chỉ và dãy số ta được kết quả cuối cùng:
    2031EAB8 0001869F
    2031EAC0 0001869F


    Chú ý
    Không thay đổi phần địa chỉ, ta chỉ thay đổi phần dãy số và hàng lệnh thôi.
    Dưới đây là một số label hữu dụng mà bạn nên ưu tiên tìm:
    Bypass
    Disable
    Enable
    Free
    Add
    Remove
    Get
    Activate
    Apply
    Cheat/Bcheat
    Display

    Bây giờ ta sẽ thử thêm với game GTC Africa. Trước hết hãy mở file elf và bắt đầu Invoke Analyzer. OK, xong, bây giờ hãy xem các label tìm được, ta thấy một label rất đáng chú ý tên là CheatUnlockAll.
    [​IMG]

    Chọn label và nó sẽ đưa ta đến thanh địa chỉ:

    [​IMG]
    001aa660:24050001 ,li a1, a1=0x00000001
    001aa664:3c010028 ,lui at, at=0x00280000
    001aa668:ac25a588 ,sw a1 ,[_0027a588]
    001aa66c:3c010028 ,lui at, at=0x00280000
    001aa670:ac25a594 ,sw a1 ,[_0027a594]
    001aa674:3c010028 ,lui at, at=0x00280000
    001aa678:ac25a598 , sw a1 ,[_0027a598]

    Hãy nhìn vào "sw", ta thấy chúng đều nối đến các địa chỉ khác nhau. Vậy ta được phần địa chỉ là
    0027A588
    0027A594
    0027A598

    Được rồi, bây giờ đến phần dãy số, làm sao ta lấy được dãy số? Bạn cần biết một code Unlock bình thường có dãy số là 00000001. Vậy hãy thử xem:
    0027A588 00000001
    0027A594 00000001
    0027A598 00000001

    OK, test các code với Xploder 2 nhưng không có kết quả, bây giờ ta có một thủ thuật nho nhỏ như thế này: chuyển hàng lệnh thành 1 (với hàng lệnh này, code chạy ở dạng 16 Bits), vậy ta có kết quả là:
    1027A588 00000001
    1027A594 00000001
    1027A598 00000001


    Lần lượt thử từng code ta thấy công dụng của chúng là thế này:

    Mở khoá tất cả Challenge
    1027A588 00000001

    Mở khoá tất cả Championship
    1027A594 00000001

    Mở khoá tất cả Single Race
    1027A598 00000001

    Còn tiếp...
     
  4. MH-Kyu

    MH-Kyu VGI Member

    Tham gia ngày:
    6/8/03
    Bài viết:
    3,567
    Nơi ở:
    Pride Rock
    Codecodensing
    Lưu ý là phương pháp nào chỉ có tác dụng đối với các code có sự thay đổi đều liên tiếp. Với ví dụ này ta có thể thấy khoảng cách trong phần giá trị của các code là 1 liên tiếp:

    00000000 00000063
    00000001 00000063
    00000002 00000063
    00000003 00000063
    00000004 00000063
    00000005 00000063
    00000006 00000063
    00000007 00000063
    00000008 00000063
    00000009 00000063
    0000000A 00000063
    0000000B 00000063
    0000000C 00000063
    0000000D 00000063
    0000000E 00000063
    0000000F 00000063

    Bạn thấy không, địa chỉ tăng dần từ 0 -> 9, từ A -> F.

    Bây giờ định nghĩa một chút về Codecodensing. Dịch ra tiếng Việt thì nghe khá chuối: cô đọng, làm tụ code. Thực ra phương pháp này giúp giảm bớt lượng code nhập vào cheat device, chắc bạn cũng phải phát khiếp lên khi phải nhập toàn bộ cả 16 dòng code trên chứ, vừa tốn thời gian vừa dễ nhập sai. Codecodensing giúp ta giảm lượng code phải nhập vào, thậm chí có trường hợp hàng chục dòng code giảm xuống chỉ còn 2-3!

    Hiện tại các code trên của chúng ta đang ở dạng 8 Byte. Ở dạng này, hàng lệnh là 0 và phần dãy số thuộc dạng 000000FF (cái này đã được đề cập trong phần Codehacking). Ví dụ như 00000008 00000063. Bây giờ chúng ta sẽ bắt đầu giảm số lượng code xuống.

    16 Byte Condensing
    Dạng 16 Byte có hàng lệnh là 1 và phần dãy số thuộc dạng 0000FFFF. Lấy 8 code đầu trong 16 dòng code 8 Byte ở trên. Về phần địa chỉ, bạn lấy số nằm ở cuối cùng nhân đôi lên (nhân ở chế độ HEX trong Calculator chứ không phải là dạng số Dec nhé). Chẳng hạn 0 . 2 = 0, 1 . 2 = 2... cho đến 6 . 2 = C, 7 . 2 = E. Về phần dãy số, có thể thấy 63 tương đương với FF, vậy dãy số của code 16 Byte có dạng 0000FFFF nên ta có phần dãy số là 00006363.

    Kết quả là 16 dòng code ở trên đã giảm đi một nửa khi chuyển sang 16 Byte:

    10000000 00006363
    10000002 00006363
    10000004 00006363
    10000006 00006363
    10000008 00006363
    1000000A 00006363
    1000000C 00006363
    1000000E 00006363

    Nhưng chúng ta vẫn có thể giảm số lượng code xuống bằng việc chuyển nó sang dạng 32 Byte.

    32 Byte Condensing
    Dạng 32 Byte có hàng lệnh là 2 và phần dãy số thuộc dạng FFFFFFFF.Cách làm cũng tương tự như trên, có điều ta chỉ lấy 4 số đầu tiên của các code 16 Byte ở trên và phần dãy số thuộc dạng FFFFFFFF, tức là 63636363.

    Kết quả là 8 dòng code ở trên đã giảm đi một nửa khi chuyển sang 32 Byte:

    20000000 63636363
    20000004 63636363
    20000008 63636363
    2000000C 63636363

    Nhưng chúng ta vẫn có thể giảm số lượng code xuống bằng việc chuyển nó sang dạng Super 32 Byte.

    32 Byte Super Condensing
    Đây là phần nâng cao của Codecodensing. Trước tiên ta nói đến cấu trúc của code Super 32 Byte:

    4aaaaaaa xxxxZZZZ
    bbbbbbbb 00000000


    Hàng lệnh của loại code này là 4. Còn lại aaaaaaa là phần địa chỉ của code 32 Byte đầu tiên. Ở trên ta thấy phần địa chỉ là 0000000.
    Về bbbbbbbb, đó chính là phần dãy số của code 32 Byte. Ở trên ta thấy phần dãy số là 63636363.
    Vậy ta được:

    40000000 xxxxZZZZ
    63636363 00000000

    Bây giờ ta sẽ tìm xxxx. Trước tiên hãy đếm số lượng dòng code đầu tiên (ở đây là code 8 Byte) là bao nhiêu. OK, là 16. Số 16 chuyển sang dạng HEX là 10. Sau đó lấy 10 : 4 = 4 (chia ở dạng HEX). Bạn có thể dùng Calculator để tính. Vậy cuối cùng xxxx là 0004.

    Đến ZZZZ. Lấy địa chỉ 32 Byte thứ hai trừ đi địa chỉ đầu tiên:
    20000004 - 20000000 = 4
    Rồi chia cho 4:
    4 : 4 = 1
    Vậy ZZZZ là 0001

    Vậy code Super 32 Byte cuối cùng là:
    40000000 00040001
    63636363 00000000


    Bây giờ ta lại có một ví dụ khác:

    20000008 12345678
    2000009C 12345678

    Đây là dạng code 32 Byte, nhiệm vụ của ta là chuyển nó về Super 32 Byte.
    2000009C - 20000008 = 94 ----> 94 : 4 = 25 (nhắc lại là cộng trừ nhân chia... đều ở dạng HEX).

    40000008 00020025
    12345678 00000000

    Chà, bạn có biết vì sao xxxx lại là 0002 không? Đó là vì chỉ có 2 dòng code 32 Byte thôi. Cũng như ở VD trên xxxx là 0004 vì có tất cả là 4 dòng code 32 Byte sau khi được chuyển từ 16 Byte.

    Nhớ rằng địa chỉ dòng code đầu tiên phải nằm trên 0, 4 , 8 hoặc C (2 VD trên đều là 4). Nếu không bạn sẽ phải đưa thêm dòng code đầu tiên nằm trên cùng vào với các code đã được condense (tụ). Ví dụ:

    003FBF73 00000003
    003FBF74 00000003
    003FBF75 00000003
    003FBF76 00000003
    003FBF77 00000003
    003FBF78 00000003
    003FBF79 00000003
    003FBF7A 00000003
    003FBF7B 00000003
    003FBF7C 00000003
    003FBF7D 00000003
    003FBF7E 00000003
    003FBF7F 00000003
    003FBF80 00000003
    003FBF81 00000003
    003FBF82 00000003
    003FBF83 00000003
    003FBF84 00000003
    003FBF85 00000003
    003FBF86 00000003

    Ở trên là code 8 Byte. Lẽ ra kết quả cuối cùng sau khi condense sang Super 32 Byte là:

    403FBF74 00050001
    03030303 00000000

    Tuy nhiên địa chỉ đầu của code không nằm trên 0, 4, 8 hay C nên ta phải lấy thêm dòng code 8 Byte ban đầu thêm vào kết quả cuối:

    003FBF73 00000003
    403FBF74 00050001
    03030303 00000000
     
  5. MH-Kyu

    MH-Kyu VGI Member

    Tham gia ngày:
    6/8/03
    Bài viết:
    3,567
    Nơi ở:
    Pride Rock
    Codeconverting
    Codeconverting còn gọi là chuyển đổi code. Đây là một công việc quan trọng mà các codehacker cần phải biết. Chẳng hạn như bạn tìm được code ở dạng Raw bạn sẽ phải chuyển đổi nó mới có thể dùng được với các cheat device thông dụng như gameshark hay codebreaker. Hoặc mở rộng hơn nữa là bạn tìm được một code gameshark mà codebreaker không có và muốn dùng nó thì phải chuyển sang dạng codebreaker.

    Để chuyển đổi code, bạn sẽ cần một số chương trình chuyển đổi code như maxcovert (đã có phiên bản mới nhất tự động loại bỏ các code không cần thiết và tinh chỉnh chúng trong quá trình chuyển). Bạn có thể download tại đây.

    Convert Gameshark v1/Action Replay v1
    Đây có lẽ là các chuyển đơn giản nhất. Bạn chỉ việc copy code vào Input và đặt là AR2v1/GS2v1, còn Output là dạng muốn chuyển sang. Nhấn nút covert và bạn đã có kết quả. Lưu ý không điền bất cứ cái gì vào mục Key Code.

    Convert Gameshark v2/Action Replay v2
    Gameshark 2/Action Replay 2 có 3 dạng mã hóa:
    1456e7a5
    BCA99B83
    F8FCFEFF


    - Code ở dạng 1456e7a5 thường có một dòng Mastercode dạng xxxxxxxx 14xxxxxx. VD:
    Final Fantasy X-2 (JAP)
    Mastercode
    EC879A34 142F7D74
    - Code ở dạng BCA99B83 thường có 2 dòng Mastercode dạng xxxxxxxx BCxxxxxx. VD:
    0E3C7DF2 1853E59E
    - Code ở dạng F8FCFEFF thường có 2 dòng Mastercode dạng xxxxxxxx F8xxxxxx. VD:
    0E3C7DF2 1645EBB3

    Bây giờ ta bắt tay vào việc chuyển đổi. Mở chương trình, copy code mà bạn muốn chuyển vào Input, còn ở Output thì chọn dạng code mà bạn muốn chuyển thành (ở đây là AR2v2/GS2v2). Ví dụ ta có một code Xploder là:

    AL Bhed MASTER
    2A071047 FFFFFFFF

    1. Bạn muốn chuyển nó sang dạng GS2v2 phải không? Copy code trên vào Input và đặt Input là Xploder/CB. Copy 1853E59E hoặc 0E3C7DF2 1853E59E (đây là Key Code chuẩn của AR2/GS2v2) vào mục Key Code. Đặt Output là AR2/GS2v2.
    2. Đơn giản là nhấn nút covert, ta sẽ có kết quả là:
    DEAA442A BBA89A82

    Covert Codebreaker/Xploder
    Tương tự như AR2v1/GS2v1, có điều thay vì đặt Input là AR2v1/GS2v1 thì ta đặt là CB/XP. Nhấn covert để có kết quả. Nhớ không điền gì vào Key Code.

    Bạn có thể chuyển đổi code giữa các định dạng này và cách thức cũng tương tự như covert Codebreaker/Xploder (trừ Convert Gameshark v2/Action Replay v2 là phải có Key Code):
    Action Replay(GS v1/2) sang Xploder/Codebreaker
    Action Replay(GS v1/2) sang Gameshark 2 version 3
    Action Replay(GS v1/2) sang GoldenFinger/AR Card
    Action Replay(GS v1/2) sang RAW

    Xploder/Codebreaker sang Action Replay(GS v1/2)
    Xploder/Codebreaker sang Gameshark 2 version 3
    Xploder/Codebreaker sang GoldenFinger/AR Card
    Xploder/Codebreaker sang RAW

    Gameshark 2 Version 3 sang Action Replay(GS v1/2)
    Gameshark 2 Version 3 sang Xploder/Codebreaker
    Gameshark 2 Version 3 sang GoldenFinger/AR Card
    Gameshark 2 Version 3 sang RAW

    GoldenFinger/AR Card sang Action Replay(GS v1/2)
    GoldenFinger/AR Card sang Xploder/Codebreaker
    GoldenFinger/AR Card sang Gameshark 2 Version 3
    GoldenFinger/AR Card sang RAW

    RAW sang Action Replay(GS v1/2)
    RAW sang Xploder/Codebreaker
    RAW sang Gameshark 2 Version 3
    RAW sang GoldenFinger/AR Card

    Đặc biệt: Convert giữa các vùng (PAL , US)
    Bạn tìm được một code rất thú vị trên một trang web nhưng lại gặp vấn đề là nó thuộc vùng khác với đĩa game của bạn? Vậy bạn sẽ phải chuyển nó sang đúng vùng thì mới có thể dùng được. Trước tiên bạn cần biết một công thức thế này:

    PAL Code - 31F0 = US hoặc US Code + 31F0 = PAL
    Đây là phép tính Hex, bạn nào không biết Hex thì dùng Calculator trong Windows mà tính. Bạn có biết công thức trên ở đâu không? Ta sẽ chứng minh nó với ví dụ này:

    Infinite Gil PAL
    2AA3132F 05F5BABE

    Infinite Gil US
    1A613D30 0000FFFF

    Hai code trên lấy từ 2 trang web khác nhau. Ta covert chúng sang dạng RAW và được:

    Infinite Gil PAL
    2031D218 05F5BABE

    Infinite Gil US
    1031A028 0000FFFF

    Bây giờ lấy phần địa chỉ của 2 code

    Infinite Gil PAL : 31D218
    Infinite Gil US : 31A028

    31D218 - 31A028 = 31F0

    31F0 chính là khoảng cách khác biệt giữa PAL và US.

    Bây giờ ta sẽ ví dụ với game FFX bản US, code Xploder/Codebreaker:

    Open All Locations On Airship
    0A823A9E 000000FF

    Trước tiên ta chuyển nó sang dạng RAW và kết quả là 00316F61 000000FF. Cộng code trên với 31F0:

    00316F61 000000FF + 31F0 = 0031A151 000000FF (đây là code bản PAL)

    Hiện tại mới có công thức chuyển đổi code giữa bản US và PAL, chưa có Japan. Điều cốt lõi là bạn phải chuyển code muốn covert về dạng RAW trước khi cộng hay trứ với 31F0. Nhớ kĩ điều này.
     
Trạng thái chủ đề:
Không mở trả lời sau này.

Chia sẻ trang này