Đang tải...
 
       

Go Back   Diễn Đàn PSP, PSVITA | Forum PSP, PSVITA | Cộng Đồng PSP, PSVITA Việt Nam > PSP (Sony Playstation Portable) > Thư Viện Tổng Hợp > Hướng Dẫn Hack, Mod

Quyên Góp & Ủng hộ Like Facebook Việt Game Shop ADS
Trả lời
 
Ðiều Chỉnh
  #11  
Old 05-01-2017, 09:01
Ảnh đại diện của trứng cút
trứng cút trứng cút is offline
 
Tham gia ngày: Sep 2012
Bài gởi: 91
Thanks: 53
Thanked 47 Times in 43 Posts
Default

Trích Dẫn:
Nguyên văn bởi Asm65816 View Post
Nếu vậy thì bạn kg thể áp dụng những gì ghi bên trên được, vì mỗi game mỗi khác. Nhưng bạn có thể dùng cái nguyên lý ở đây.
Thì mình áp dụng nguyên lý ở trên mới tìm đc bộ font đó, nhưng vào TM canh Bpp chuẩn ,block chuẩn , tile chuẩn luôn nhưng ko thấy được chữ , chẳng lẽ còn phải tweak lại cái pallet màu cho nó đúng nữa à


To view links or images in signatures your post count must be 10 or greater. You currently have 0 posts.
Trả lời kèm trích dẫn
  #12  
Old 05-01-2017, 15:09
Ảnh đại diện của Asm65816
Asm65816 Asm65816 is offline
 
Tham gia ngày: Dec 2016
Bài gởi: 20
Thanks: 0
Thanked 15 Times in 5 Posts
Default

Bạn xem lại bpp chuẩn chưa, block đúng chưa. Những thông số này thì tùy game.


To view links or images in signatures your post count must be 10 or greater. You currently have 0 posts.
Trả lời kèm trích dẫn
  #13  
Old 05-01-2017, 23:40
Ảnh đại diện của trứng cút
trứng cút trứng cút is offline
 
Tham gia ngày: Sep 2012
Bài gởi: 91
Thanks: 53
Thanked 47 Times in 43 Posts
Default

Có cách nào code cho game xài font mặc định của ppsspp chứ ko xài font ingame đc ko , mình thấy một số game chạy font text trong ppsspp flash0 , cái đó mình vẽ lại đc


To view links or images in signatures your post count must be 10 or greater. You currently have 0 posts.
Trả lời kèm trích dẫn
  #14  
Old 06-01-2017, 00:20
Ảnh đại diện của Asm65816
Asm65816 Asm65816 is offline
 
Tham gia ngày: Dec 2016
Bài gởi: 20
Thanks: 0
Thanked 15 Times in 5 Posts
Default

Trích Dẫn:
Nguyên văn bởi trứng cút View Post
Có cách nào code cho game xài font mặc định của ppsspp chứ ko xài font ingame đc ko , mình thấy một số game chạy font text trong ppsspp flash0 , cái đó mình vẽ lại đc
Có, bạn phải biết assembly R4000 mới làm được việc đó.


To view links or images in signatures your post count must be 10 or greater. You currently have 0 posts.
Trả lời kèm trích dẫn
  #15  
Old 06-01-2017, 00:26
Ảnh đại diện của trứng cút
trứng cút trứng cút is offline
 
Tham gia ngày: Sep 2012
Bài gởi: 91
Thanks: 53
Thanked 47 Times in 43 Posts
Default

Trích Dẫn:
Nguyên văn bởi Asm65816 View Post
Có, bạn phải biết assembly R4000 mới làm được việc đó.
Ok để nghiên cứu thử , chắc cũng mất thêm 1 tháng


To view links or images in signatures your post count must be 10 or greater. You currently have 0 posts.
Trả lời kèm trích dẫn
  #16  
Old 08-01-2017, 16:50
Ảnh đại diện của Necro
☆Necro☆ Necro is offline
<-.¸.•°||°•.¸ Devil May Cry ¸.•°||°•.¸.->
 
Tham gia ngày: Jul 2012
Đến từ: ๑۩۞۩๑๑LIMBO_CITY๑๑۩۞۩๑
Bài gởi: 5,281
Thanks: 387
Thanked 6,695 Times in 1,292 Posts
Gửi tin nhắn qua Yahoo chát tới Necro
Default

"Lúc này chỉ cần export hình ảnh ra dạng PNG hoặc BMP, chỉnh sửa bộ font này rồi import vào GAME.BIN là kết thúc công việc."
Sau khi chỉnh sửa file PNG thì làm cách nào import ngược lại vào game.bin vậy bạn , dùng hex copy value ngược vào gamebin à , bạn chỉ cụ thể chỗ này được ko


To view links or images in signatures your post count must be 10 or greater. You currently have 0 posts.

™ PVN Huy Hiệu ™
Cute 8 Queen Of Bra Pantsu 
Số Huy Hiệu : 3

Trả lời kèm trích dẫn
  #17  
Old 08-01-2017, 20:15
Ảnh đại diện của Necro
☆Necro☆ Necro is offline
<-.¸.•°||°•.¸ Devil May Cry ¸.•°||°•.¸.->
 
Tham gia ngày: Jul 2012
Đến từ: ๑۩۞۩๑๑LIMBO_CITY๑๑۩۞۩๑
Bài gởi: 5,281
Thanks: 387
Thanked 6,695 Times in 1,292 Posts
Gửi tin nhắn qua Yahoo chát tới Necro
Default

Cơ mà 1bpp=2màu , 2bpp=4 màu và 4bpp=16 màu, 8bpp=256 màu chứ nhỉ


To view links or images in signatures your post count must be 10 or greater. You currently have 0 posts.

™ PVN Huy Hiệu ™
Cute 8 Queen Of Bra Pantsu 
Số Huy Hiệu : 3

Trả lời kèm trích dẫn
  #18  
Old 09-01-2017, 22:29
Ảnh đại diện của Asm65816
Asm65816 Asm65816 is offline
 
Tham gia ngày: Dec 2016
Bài gởi: 20
Thanks: 0
Thanked 15 Times in 5 Posts
Default

Bạn edit xong rồi import lại bằng Crystal Tile hoặc Tile Molester.
Mình nhầm chỗ 4bpp, đúng là 16 màu chứ không phải 8.


To view links or images in signatures your post count must be 10 or greater. You currently have 0 posts.
Trả lời kèm trích dẫn
  #19  
Old 13-01-2017, 20:09
Ảnh đại diện của trứng cút
trứng cút trứng cút is offline
 
Tham gia ngày: Sep 2012
Bài gởi: 91
Thanks: 53
Thanked 47 Times in 43 Posts
Default

Bác ơi cái font của gow nó dùng ascii thì làm cách nào mà vẽ thêm kí tự tiếng việt vào được vậy , mình bị thiếu hơn cả chục kí tự nhưng ko còn chỗ để thêm vào


To view links or images in signatures your post count must be 10 or greater. You currently have 0 posts.

thay đổi nội dung bởi: trứng cút, 13-01-2017 lúc 20:32
Trả lời kèm trích dẫn
  #20  
Old 15-01-2017, 12:46
Ảnh đại diện của Asm65816
Asm65816 Asm65816 is offline
 
Tham gia ngày: Dec 2016
Bài gởi: 20
Thanks: 0
Thanked 15 Times in 5 Posts
Default

III. Bắt tay vào việc: xác định text

Trong phần trước, ta đã xác định được font chữ (nói đúng hơn là texture chữ) để chỉnh sửa nó. Tuy nhiên, nếu để ý kỹ thì sẽ thấy hai điểm khó khăn trong phần font của bản Anh ngữ mà ta đã xác định:

- Bảng font chỉ gồm 26 chữ cái La Tinh và một số ký tự Ascii khác, không đủ nhiều để có thể chèn chữ La Tinh có dấu trong tiếng Việt. Số lượng chữ có dấu và không dấu trong tiếng Việt (không tính chữ in hoa) đã hơn 60. Vậy phải làm sao?
- Bảng font chỉ có một kiểu chữ là in hoa, không có chữ thường.

Đối với vấn đề chữ hoa, thực ra là trong game vẫn hiển thị đầy đủ chữ hoa và chữ thường. Chỉ là cùng một kiểu chữ nên khó nhận ra. Đối với chữ thường, phần code trong game sẽ làm chữ nhỏ hơn phần chữ hoa nhưng thực chất vẫn dùng cùng một texture với chữ hoa. Đối với vấn đề thiếu ký tự có dấu cho tiếng Việt, ta có thể giải quyết dễ dàng nếu để ý các phiên bản ngôn ngữ khác của GOW GOS. Cụ thể là bản tiếng Nhật, với số lượng chữ Kana và chữ Hán lên tới hàng ngàn chữ. Nhưng làm thế nào để mở rộng bản font đặng còn thêm chữ vào? Vấn đề này tôi sẽ giải thích ở phần sau.

Còn bây giờ, việc cần làm là xác định vị trí của text trong Iso. Hay nói chuẩn xác hơn là xác định kiểu encoding của text. Text encoding có nhiều kiểu, chẳng hạn kiểu đơn giản nhất là chuẩn Ascii với các ký tự La Tinh cơ bản không dấu tương ứng với mỗi con số (hệ thập lục) như 41=A, 42=B, 6A=j, 6B=k,.... Ngoài ra còn nhiều kiểu encoding khác phức tạp hơn như Shift-Jis, Unicode,... và cũng có những kiểu encoding không theo một quy chuẩn nào, thường thấy trong game thế hệ cũ như Nes, Snes, Saturn, PSX,... Với những kiểu encoding khác nhau thì tuy cùng một chữ cái nhưng giá trị tương ứng của nó là khác nhau. Chẳng hạn nếu theo chuẩn Ascii thì chữ "A" tương đương với số 41, nhưng theo một chuẩn khác thì chữ này có thể là số 5C,....

1. Xác định encoding theo cách thủ thuật

Cách làm này mang tính hú họa, đoán mò, được chăng hay chớ và sẽ không áp dụng được nếu như game không dùng kiểu Ascii hoặc nếu text bị mã hóa/nén. Nhưng may mắn thay là GOS bản tiếng Anh và các ngôn ngữ Âu châu khác đều dùng Ascii, và cũng không bị mã hóa hay nén nên ta có thể áp dụng trong trường hợp này. Dù sao đây cũng là cách đơn giản nhất, ít tốn thời gian nhất nên cứ thử.

Đầu tiên, tìm một đoạn text ở vị trí thuận tiện nhất, chẳng hạn ở gần save point hoặc đoạn mở đầu.



Như đã biết, mỗi chữ La Tinh trong kiểu encoding Ascii tương đương với một con số thập lục. Như vậy, phần text trong đoạn mở đầu sẽ nằm đâu đó trong Iso.
Tiếp theo, mở Iso bằng Hex editor và tìm kiếm chuỗi text:

"Kratos, the Ghost of Sparta"

hoặc có thể dò tìm những cụm từ khác trong câu trên.

kết quả ta tìm được địa chỉ dòng text trên.



Áp dụng cách chia địa chỉ cho $800 để tính LBA như ở phần trước, ta biết được phần text này nằm trong file DATA\ENGLISH\R6_INTRO.BIN

2. Xác định encoding theo cách khoa học

Trong phần trước ta đã xác định được font bằng cách set write break point cho texture. Kết quả cho biết là chức năng syscall zz_sceIoRead là thứ đã ghi dữ liệu texture từ UMD (Iso) vào Ram. Và zz_sceIoRead sử dụng đường dẫn đến file mà zz_sceIoOpen đã mở trước đó. Lần này ta không biết trước dữ liệu (text) được ghi vào Ram là những gì, nên không thể set write break point. Nhưng ta đã biết zz_sceIoRead là thứ ghi dữ liệu vào Ram, vậy có thể set execute break point ở zz_sceIoRead để CPU dừng xử lý mỗi khi nó gặp phải syscall này. Cách set như hình dưới.



(Từ debug console, chuyển từ tab Regs sang tab Funcs, kéo xuống dưới để thấy các syscall và double click vào syscall cần set)

Ngoài ra, còn một chức năng khác cũng có thể đọc dữ liệu từ file trong UMD và ghi vào Ram, là sceIOReadAsync. Do vậy nên set break point ở cả hai syscall này.

Sau khi set break point, khởi động lại game. Có thể có nhiều lần CPU dừng xử lý khi gặp hai syscall ta vừa set, vì có thể nó cần mở nhiều file khác nhau, trong đó có file ta cần xác định.

Sau nhiều lần CPU dừng, ta có thể xác định sceIOReadAsync mới là chức năng đọc chuỗi text trên.



Lần lượt click Step Into để theo dấu từng lệnh xử lý. Lúc này ta thấy $a1 chứa giá trị địa chỉ mà CPU đọc chuỗi text từ Ram (0x9DE9C00) và $s1 là địa chỉ phần đường dẫn đến file đã mở (0x9DE01F0).



Như vậy ta đã xác định được chuỗi text cần tìm nằm ở file nào.

Lưu ý: nên save state trước đoạn cần debug, vì có thể các địa chỉ ghi vào Ram thay đổi mỗi lần. Khi save state ngay trước đoạn cần debug, vì như thế ta đã save luôn cả "chủng tử" (seed) cho số ngẫu nhiên được chọn làm địa chỉ ghi Ram. Tham khảo thêm bài này (https://gokuraku-shujo.blogspot.com/...gau-nhien.html) để biết thêm về số ngẫu nhiên.


3. Tìm Pointer

Pointer là con số chỉ đến địa chỉ bắt đầu của từng câu thoại. Vì sao phải dùng nó? Vì nó giúp cho việc viết lời thoại (text) trong game được linh động hơn. Khi nhà sản xuất thay đổi câu chữ, làm độ dài của chuỗi thay đổi theo thì họ không phải mất công sửa đổi thôi. Nói nôm na, Pointer giống như một dạng label.

Đọc bài này (https://gokuraku-shujo.blogspot.com/...thuat-ff9.html) để hiểu thêm về Pointer.

Sau khi xác định được file chứa text, mở file bằng Hex editor và ta dễ dàng xác định được Pointer bằng mắt thường đối với những ai đã quen với việc này:

- Gồm 4 byte (thường chỉ sử dụng 2 byte cuối vì GOS không có text nào đủ dài để dùng đến 2 byte đầu)
- Mỗi Pointer cách nhau 0x0E byte

Tuy nhiên cách xác định bằng mắt thường chỉ áp dụng cho trường hợp file nhỏ, người đã quen. Còn đối với những trường hợp khác thì nên sử dụng debugger để tìm, cách thức tương tự như những phần trước.

Chẳng hạn, câu thoại đầu tiên được đọc từ vị trí 0x9DEA1C3 trong Ram. Chỉ cần set read break point tại địa chỉ đó thì CPU sẽ dừng lại ngay trước lệnh đọc tại địa chỉ này. Từ đó ta truy ngược code xử lý và sẽ thấy đoạn:



08ABB4E0 lw v0,0x4(t0) #đọc giá trị tại địa chỉ $t0 + 4, chứa vào $v0. Địa chỉ $t0 là 0x9DE9E50 + 4 = 0x9DE9E54. Giá trị tại địa chỉ này là 000002BB.
08ABB4E4 addu v0,a0,v0 # lấy giá trị hiện tại của v0 + giá trị của a0 rồi ghi vào v0. Giá trị hiện tại của v0 là 0x9DE9F08, vị trí bắt đầu của khối text.

Như vậy có thể thấy mối liên kết giữa Pointer và địa chỉ bắt đầu câu thoại trong GOS như sau:

- Địa chỉ bắt đầu text = địa chỉ bắt đầu khối text + giá trị Pointer

Đây là điều hết sức bình thường và quen thuộc với các hệ máy console.

(Còn tiếp)



To view links or images in signatures your post count must be 10 or greater. You currently have 0 posts.
Trả lời kèm trích dẫn
The Following 2 Users Say Thank You to Asm65816 For This Useful Post:
๖ۣۜSam-Sama (15-01-2017), voiduoidai (15-01-2017)
Trả lời

Tags
dẫn, god, hóa, hướng, việt, war

Ðiều Chỉnh

Quuyền Hạn Của Bạn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt



Múi giờ GMT. Hiện tại là 05:52.


Powered by: vBulletin v3.8.2 Copyright ©2000-2017, Jelsoft Enterprises Ltd.

1107
Lượt xem