I. Thông tin chung + Tên game: Super Robotto Taisen 4 (J) hoặc Super Robot War 4/4th_Super_Robot_Wars (E) hay Đại chiến Robot/Đại chiến siêu Robot... (V) + Hệ máy: Super Famicom (SFC, aka Super Nintendō Entertaiment System) + Phát hành: 27/09/1997 + Thể loại: Role playing chiến thuật + Số người chơi: 01 + Vị trí trong cộng đồng: huyền thoại II. Chuẩn bị Để theo được bài viết này, bạn cần chuẩn bị một số thứ tối thiểu như sau: 1. Kiến thức về hệ nhị phân (Binary, Bin) và hệ thập lục (Hexadecimal, Hex), kiến thức về bit và byte. Không nhắc lại ở đây vì những bài viết về hai hệ số này đã tràn ngập Google rồi, tôi không tốn thời gian gõ lại làm gì. 2. Một chút thời gian rãnh. Không nhiều lắm, nhưng đủ để đọc hết bài viết này và làm theo. Có thể chia thành nhiều kỳ, số kỳ không hạn chế, tùy vào độ rãnh (háng) của bạn. 3 Giả lập kiêm Debugger để chạy game SNES. Trên Net có kha khá, nhưng khuyên dùng Snes9X. Tải từ Google. Cũng có thể dùng Bsnes plus. 4. Rom Super Robot Taisen 4 5. Trình Hex Editor. Có vô vàn, nhưng tôi hay dùng Stirling vì sự tiện dụng của nó. Tải bản tiếng Việt của Stirling tại đây (click vào). Ngoài ra cũng cần dùng Windhex của tác giả Bongo, chủ yếu để đọc text trong Rom. Tải tại Google. 6. Trình assembler cho Snes: có kha khá, nhưng tôi dùng Xkas. Google để tải về. 7. Lunar Address, tiện ích chuyển đổi giữa địa chỉ PC và địa chỉ SNES. Tải về từ Google. 8. Lunar Expand, tiện ích để mở rộng rom SNES. 9. Cần thêm YY-CHR để biên tập font. 10. Search Relative để dò tìm tương đối. Tải tại Google.com 11. Ứng dụng trích xuất text dựa trên table. Có khá nhiều, nhưng tốt nhất là Cartographer. Tải từ Google.com. Nếu có khả năng, hãy tự code. 12. Ứng dụng chèn text vào game dựa trên table. Có khá nhiều, nhưng tốt nhất là Atlas. Tải từ Google.com. Nếu có khả năng, hãy tự code. 12. Cuối cùng, à chưa phải cuối cùng. Một chút kiên nhẫn. Không cần nhiều lắm, chỉ cần đủ để đọc lại bài này từ đầu chí cuối sau khi đọc hết mà vẫn không hiểu gì. 13. Đây mới là cuối cùng. Cần một bộ óc bình thường như cân đường hộp sữa. Không cần cái đầu quá nhanh như Core i7 hay Snapdragon 820, nhưng nếu nhanh được như vậy thì càng tốt. Chỉ cần làm được 5 phép tính cộng trừ nhân chia số có 2 chữ số trong thời gian 1 phút là đủ tiêu chuẩn. Sau khi đã tải đủ bộ trên, hãy bật Hex editor và kiểm tra xem Rom bạn tải về có $200 (512) byte header hay không. Nếu có thì xóa quách nó đi. Lý do: các phiên bản Debugger của Snes9X đời cũ không đọc được Rom có header. Các phiên bản mới thì đọc được, nhưng dễ gây nhầm lẫn trong cách tính địa chỉ nên xóa đi cho đơn giản. III. Lập table, xác định text a. Xác định text Mục tiêu của ta là dịch Rom từ J sang V, do đó cần xác định được text nằm chỗ nào trong Rom. 1. Bật Snes9X Debugger, load game vào đoạn hội thoại mở đầu. 2. Nhìn sang Debug console, nhấn vào nút "What's Used". Lúc này Deubgger sẽ cung cấp cho ta các thông tin về đồ họa trong VRam (Video Ram). Để ý phần background ở khung bên dưới. 3. Nhấn lần lượt phím 1, 2, 3, 4.... để kích hoạt tắt/bật các background. Hình ảnh trên màn hình Snes tại một thời điểm được cấu thành từ nhiều background (phông nền). Các phím số được gán mặc định cho chức năng bật/tắt các background này. Khi nhấn 1, ta thấy khung thoại và phần chữ đã biến mất khỏi màn hình. Điều này cho thấy phần text, font chữ và hình ảnh cái khung cũng như avatar nhân vật dùng chung background 1. Bây giờ nhìn lại phần thông tin mà Debug console cung cấp. BG0: VOffset:0, HOffset:0, W:32, H:32, TS:8, BA:0x7800, TA:0x1000 BG1: VOffset:125, HOffset:129, W:64, H:64, TS:8, BA:0x0000, TA:0x4000 BG2: VOffset:125, HOffset:129, W:32, H:32, TS:8, BA:0x0000, TA:0x1000 BG3: VOffset:0, HOffset:0, W:32, H:32, TS:8, BA:0x0000, TA:0x0000 Chú ý là số thứ tự của BG trên Debug Console hơi khác so với số thứ tự của BG thực. BG0 trên Debug Console chính là backgroudn 1. BG0: VOffset:0, HOffset:0, W:32, H:32, TS:8, BA:0x7800, TA:0x1000 Dòng này cho ta Tileset (phần dữ liệu đồ họa) của BG1 nằm ở $1000 x 2 = $2000 trong Vram. Mọi thành phần trong Vram đều chiếm 2 byte nên mọi địa chỉ đều được nhân đôi. Ngoài ra ta còn biết được Tilemap (bản phân bố các tile) của background 1 nằm ở $7800 x 2 = $F000 trong Vram. 4. Nhấn vào nút "Show Hex" trên Debug Console. [/IMG] Lúc này, Hex editor nội trú của Debugger sẽ xuất hiện. Chọn mục Viewing là Vram, chọn địa chỉ $F000, nhấn Set Range để Hex editor hiển thị từ địa chỉ $F000 trở về sau, ta khỏi cần kéo từ $0000 xuống. Đây chính là tilemap, bản phân bố các tile của BG1. Mỗi một thành tố trong Vram gồm 2 yếu tố: + Số thứ tự của tile. + Tính chất của tile: palette màu, có đối xứng x, đối xứng y hay không. Thử thay đổi vài con số trong tilemap rồi quan sát sự biến đối trên màn hình để rút ra kết luận. Bằng cách thay đổi số thứ tự của tile, ta sẽ biết được số tile nào cho ra hình ảnh nào. Tuy nhiên, với cách này thì ta biết được mỗi tile 8x8 pixel chỉ chứa 1/2 hình ảnh của một ký tự. Do vậy, bằng cách dò tilemap thì ta chỉ biết được số thứ tự tile của một nửa ký tự, không biết được hoàn toàn của một ký tự. Do đó cần phải tìm cách khác. (Sẽ đề cập ở bài sau)
hay quá phần này là phần mình thích nhất trong dòng SRW chắc vì chơi từ hồi học cấp 2 nên ấn tượng xưa cứ chơi game mù miết chả hiểu cốt truyện gì cả :(