Tổng hợp các kiến thức và thủ thuật chỉnh sửa file RSC
TỔNG QUAN VỀ RSC
RSC là những file không thể thiếu cho bất kỳ chương trình nào của UIQ3, vì nó qui định các lệnh và giao diện cho chương trình đó. Nó cũng qui định cho rất nhiều cấu hình quan trọng khác trong điện thoại như ngôn ngữ, fonts, bàn phím ảo, Hardware button, giao diện chính của điện thoại (Activity menu, Main menu, Operator logo, …)
RSC thường nằm trong thư mục Resouce của ổ C, D và Z như Resource\Apps, Resource\ ZSBPOPUPMENU, Resource\Plugin,…
Có lẽ vì thế mà tên file mở rộng của nó có chấm đuôi là RSC (viết tắt của chữ Resource chăng?
TỔNG QUAN VỀ RSC
RSC là những file không thể thiếu cho bất kỳ chương trình nào của UIQ3, vì nó qui định các lệnh và giao diện cho chương trình đó. Nó cũng qui định cho rất nhiều cấu hình quan trọng khác trong điện thoại như ngôn ngữ, fonts, bàn phím ảo, Hardware button, giao diện chính của điện thoại (Activity menu, Main menu, Operator logo, …)
RSC thường nằm trong thư mục Resouce của ổ C, D và Z như Resource\Apps, Resource\ ZSBPOPUPMENU, Resource\Plugin,…
Có lẽ vì thế mà tên file mở rộng của nó có chấm đuôi là RSC (viết tắt của chữ Resource chăng?
Vì là một file quan trọng, lại có thể dễ dàng chỉnh sửa bằng Hex Editor, nên theo thống kê, có tới khoảng 90% việc modify các chương trình nhằm vào file này.
Trong phạm vi topic này, mình xin trình bày một số kiến thức và thủ thuật chỉnh sửa file RSC sau đây:
- POPUP MENU
( File ZSBPOPUPMENU.RSC)
- EXIT BUTTON
(File Application.RSC)
- THAY ĐỔI BỐ CỤC GIAO DIỆN MỘT CHƯƠNG TRÌNH
(File Application.RSC)
- CHẠY CHƯƠNG TRÌNH Ở CHẾ ĐỘ FLIP CLOSE P990i
(File Application_loc.RSC)
Quảng cáo
PHẦN I: THỦ THUẬT LÀM POPUP MENU:
Popup Menu là một trong những mod sáng tạo nhất và được nhiều người quan tâm nhất trong số các Mod đã có, vì nó làm tăng giá trị sử dụng cho điện thoại.
Có rất nhiều bài về Popup Menu, các bạn có thể tham khảo thêm trong các link sau:
http://www.tinhte.com/forum/showthread.php?t=62162&highlight=popup+menu
http://www.tinhte.com/forum/showthread.php?t=62717&highlight=popup+menu
Quảng cáo
http://www.tinhte.com/forum/showthread.php?t=62909&highlight=popup+menu
http://www.tinhte.com/forum/showthread.php?t=76164&highlight=popup+menu
http://www.tinhte.com/forum/showthread.php?t=75482&highlight=popup+menu
Các chi tiết về chỉnh sửa Popup menu, các bạn tự tham khảo trong những bài viết này. Ở đây, mình xin trình bày một số kinh nghiệm và thủ thuật mở rộng sau đây:
1- Cách tìm UID chưa biết của một chương trình trong Popup menu mà không có trên điện thoại của bạn:
Từ tên của chương trình bạn cần tìm UID, từ phần hex của chuỗi character, ngay đầu chuỗi sẽ có 2 cặp hex trùng lặp dạng xy xy. Từ đó đếm ngược lên 10 byte nữa sẽ tìm được Hex Offset của chương trình. Dùng lệnh find để tìm tiếp địa chỉ thứ hai của hex offset này. Từ địa chỉ này đếm tới 4 byte 00 sẽ gặp UID của chương trình đó.
Ví dụ: Trong chuỗi sau đây của Slick:
a8 09 00 00 00 00 00 00 00 00 00 00 0d 0d 53 6c 63 69 6b…
Thì a8 09 là hex offset của Slick.
Tìm địa chỉ a8 09 thứ hai sẽ thấy chuỗi sau:
a8 09 00 00 cf 0b 00 a0…
Thì cf 0b 00 a0 chính là UID của Slick
Dùng cách này bạn có thể tìm được UID của bất cứ chương trình nào chưa biết, sau đó dùng Gdesk hoặc Swiss Manager Pro để tìm UID của chương trình mà bạn muốn đổi để thay vào UID này
2- Các code quan trọng trong Popup menu:
a) Code qui định chiều dài chuỗi ký tự:
Code này có định dạng là 2 byte trùng lặp xy xy, nó đứng ngay đầu chuỗi ký tự, và qui định chiều dài cho chuỗi ký tự đó. Khi thay đổi chiều dài chuỗi ký tự, nhất thiết phải thay đổi code này
Có nhiều bản popup menu khác nhau của nhiều tác giả, phổ biến nhất là của Shark với chiều dài chuỗi là 13, nên đổi sang hex code sẽ là 0d 0d, hoặc của Gapata, chiều dài chuỗi là 15, nên hex code là 0f 0f
Giả sử bạn tự làm Popup menu cho mình với chiều dài chuỗi ký tự là 30, thì hex code của bạn sẽ phải là 1e 1e
Vì sao có code 0d 0d , 0f 0f, hay 1e 1e ?
Đây chính là hexadecimal của các số tương ứng 13, 15, và 30. Dùng máy tính khoa học trong Computer, hoặc Best Calc, hoặc My Calc,.. để đổi từ Dec sang Hex sẽ có các kết quả này
b) Code của Sub menu:
Trong popup menu, bạn dễ dàng tìm ra chuỗi 0x 03 60 6e 80
Trong đó 0x là vị trí của Sub menu, còn 03 60 6e 80 là code của sub menu. Tất cả các chương trình nằm sau code này sẽ cùng nằm trong một sub menu đó
c) Code qui định số lượng các item trong một block:
Code này có dạng 0f xx
Trong đó of là code cố định, còn xx là số lượng các item có trong block đó.
Ví dụ: Trong block của sub menu Documents của Sharks, bạn sẽ tìm thấy chuỗi:
0f 0a 00 70 09 00 00 00 00 00 00 00 00 00 00 0d 0d 43 61 6c 6c 20 20 20…
Thì trong block chứa item đầu tiên là “Call” này sẽ có 10 item, vì 0a là hex, khi đổi sang dec sẽ bằng 10
Thay đổi code xx sẽ làm thay đổi số lượng item của block đó.
Dùng cách này để ẩn bớt các item trong một block, tham khảo thêm ví dụ ở đây:
http://www.tinhte.com/forum/showpost.php?p=619153&postcount=9
d) Code thể hiện item bằng icon:
Code này nằm ngay chuỗi ff ff ff ff 00 00 00 00 đứng phía sau tên của item. Thay đổi code này sẽ cho phép ẩn hay hiện icon của item đó.
Bài viết chi tiết ở đây:
http://www.tinhte.com/forum/showthread.php?t=76353&highlight=popup+menu
e) Code qui định cách trình bày item trên menu:
Code này có dạng xx 00 00 00 yy yy + [chuỗi tên item]
Trong đó xx là code qui định cách trình bày item. Thay đổi code này sẽ được các cách thề hiện item khác nhau như gạch dưới, mờ đi (disable), có chấm tròn hay ô vuông trước item,…
f) Code qui định kích thước của UID block:
Code này đứng ở trước UID block, nó cho biết trong UID block có tổng số bao nhiêu byte. Nó thường có dạng 81 ff 2e 00 hay 82 2f 28 00,… tùy theo Popup menu. Ở đây Size của UID block là 1ff và 22f. Khi thêm bớt chuỗi UID, phải cập nhật lại code này
g) Code của Resource Index:
Code này thường đứng cuối cùng trong bảng hex editor. Khi thêm bớt các byte trong file rsc, phải cập nhật lại code này
3) Sau đây là một số thủ thuật về Popup Menu
3.1-Thủ thuật kéo dài chuỗi ký tự (dựa trên code của mục a)
Chuỗi ký tự có thể kéo dài, nhưng phải cập nhật code ở mục a) và mục g) tương đối phức tạp. Ở đây mình chọn một cách đơn giản hơn mà không phải cập nhật 2 code này, đó là thủ thuật kéo dài bằng cách vay mượn hay thêm bớt ký tự của chuỗi khác.
Ví dụ: Mình cần làm một item cho Main, với chuỗi ký tự là “Main Menu of dongxanh”. Chuỗi này cần 21 ký tự, tương ứng với code cho ký tự của nó là 15 ( dec = 21 ---> hex =15). Khi đó mình sẽ phải mượn thêm 8 ký tự ở item khác trong cùng một block. Ở đây mình chọn Torch. Torch chỉ cần 5 ký tự, tương ứng với hex là 05
Popup của mình đang có 13 ký tự cho tất cả các item. Như vậy, mình sẽ chèn thêm 8 ký tự cho “Main menu” để được “Main Menu of dongxanh”, đồng thời xóa bớt 8 ký tự ở chuỗi “Torch”. Và sau khi sửa tên xong thì phải cập nhật code đứng đầu chuỗi ký tự của
“Main Menu of dongxanh” từ 0d 0d thành 15 15, và “Torch” từ 0d 0d thành 05 05
3.2- Thủ thuật “trang điểm” Popup Menu: (dựa trên code của mục e)
Từ code đứng đầu chuỗi chiều dài ký tự, đếm lùi lên xx 00 00 00 0d 0d …
Ngay tại byte xx nếu thay đổi thông số sẽ có các kết quả sau:
- xx = 01 hay 03, 05, 07 ---> item sẽ mờ đi (disable)
- xx = 02 ---> item sẽ được gạch dưới
- xx = 10 ---> item sẽ có chấm tròn
- xx = 08 ---> item sẽ có ô vuông
- xx = 09 ---> item sẽ có ô vuông và mờ đi (disable)
- xx = 12 ---> item sẽ có chấm tròn + gạch dưới
Các bạn xem hình minh họa sau đây, mình thay đổi thông số ngay tại mục “MainMenu” và ra các kết quả như sau:
Và sau khi “trang điểm” xong, thì Popup menu của mình có “dung mạo” như sau:
Còn tiếp . . . . . . . . . . . . . . . . . . . .