Cùng làm patch Der Langrisser trên SNES

Thảo luận trong 'Turn Based Strategy' bắt đầu bởi asm65816, 12/7/09.

  1. thief_fighter

    thief_fighter Legend of Zelda Lão Làng GVN

    Tham gia ngày:
    5/8/05
    Bài viết:
    1,169
    Nơi ở:
    The world god only knows
    ver 1.1
    fix lỗi line với page break ở cuối


    credit:
    Antomy: lập trình + thiết kế GUI
    thief_fighter: đứng ngoài chém gió + tranh công \:D/
     

    Các file đính kèm:

  2. Antomy

    Antomy Mr & Ms Pac-Man

    Tham gia ngày:
    6/5/06
    Bài viết:
    183
    Nơi ở:
    Ho Chi Minh city
    @thief_fighter: Tui bị lỗi y chang, file xuất ra chỉ có 1 dòng trống rỗng, dung lượng 1KB.
    Tui nghĩ lỗi ở đây là do file định dạng file xuất ra đấy >__< Ông test lại xem file đầu vào/ đầu ra của ông định dạng gì? Đau đầu với cái nhập/xuất file rồi, chuyển qua textfield cho chắc ăn...
    Tui bận cả tuần, chỉ có chủ nhật là mò mẫm được, ông mò cách giải quyết hoặc chuyển nó qua nhập/xuất ra testfield xem thế nào? còn không phải nghiên cứu định dạng file nhập xuất...
    Trăm sự nhờ ông hết đấy... :D
     
  3. thief_fighter

    thief_fighter Legend of Zelda Lão Làng GVN

    Tham gia ngày:
    5/8/05
    Bài viết:
    1,169
    Nơi ở:
    The world god only knows
    định dạng file nhập/xuất đều là txt
    lạ nhỉ
    tôi vừa thử xong, xuất file ngon lành mà

    đây là file test
    Mã:
    Bác sĩ Oátxơn<line>chạy vào phòng<line>ngủ của Sơlốc<pause><page>Hôm và lôi nhà<line>thám tử ra<$00>
    khỏi giường:<$00>
    
    - Dậy nhanh<line>lên, có người<line>mất tích. <$00>
    
    Hôm thong thả<line>vươn vai, rửa<line>mặt, đánh răng<pause><page>và càu nhàu:<$00>
    - Oatxơn, mình<line>đã nói với cậu<line>không biết bao<pause><page>nhiêu lần là<line>điều tra<$00>
    chẳng phải là<line>cứu hoả, cần<line>dùng cái đầu<pause><page>hơn đôi chân. <$00>
    
    Bác sĩ dậm<line>chân:<$00>
    - Nhưng đây là<line>một việc<line>nghiêm trọng, <pause><page>một người đàn<line>ông mất tích, <$00>
    chỉ để lại một<line>chiếc áo sơ mi. <line>Nhà thám tử<pause><page>cầm chiếc áo<line>lên, xem<$00>
    xét bằng chiếc<line>kính một mắt<line>cũ kỹ của mình<pause><page>rồi thởi dài:<$00>
    
    - Có thế mà<line>cũng đánh thức<line>tớ dậy. Chỉ<pause><page>cần động não<line>chút xíu là<line>biết<$00>
    ngay nạn nhân, <line>nếu có thể gọi<line>như vậy, đang<pause><page>ở đâu. <$00>
    
    Oatxtơn trợn<line>mắt:<$00>
    - Dựa vào cái<line>gì mà anh phát<line>biểu thế? <$00>
    
    - Cái áo này. <line>Hãy quan sát<line>cho kỹ. Đây là<pause><page>một chiếc áo<line>mua chứ không<$00>
    phải may. <line>Những áo bán<line>thường đường<pause><page>gấp bằng kim<line>gút bỏ trong<line>bao ni<$00>
    lông, lỗ kim ở<line>lưng và ở tay<line>tuy nhỏ vẫn<pause><page>còn đó. Vì<line>những chiếc áo<$00>
    đời mới đều<line>găm bằng nẹp<line>nhựa, nên có<pause><page>thể kết luận<line>áo này được<line>mua<$00>
    lâu rồi. <$00>
    Bác sĩ há<line>miệng nhìn, <line>còn nhà thám<pause><page>tử nhẹ nhàng<line>nói tiếp:<$00>
    
    - Chiếc áo này<line>của một người<line>đàn bà mua<pause><page>tặng cho nạn<line>nhân, vì hai<$00>
    cái khuy áo dự<line>trữ ở vạt dưới<line>đã bị cắt lấy<pause><page>đi. Chỉ có đàn<line>bà mới<$00>
    cẩn thận như<line>vậy và chỉ có<line>vợ mới cắt đi<pause><page>như vậy, bồ<line>không bao giờ<$00>
    làm thế vì hai<line>người không<line>thường xuyên ở<pause><page>cùng nhà. Hai<line>vợ chồng<$00>
    này đã từng có<line>tiền vì trước<line>đây áo được<pause><page>giặt bằng máy<line>nên nó bạc<$00>
    đều, nhưng<line>thời gian vừa<line>qua họ đã túng<pause><page>thiếu phải bán<line>máy và giặt<$00>
    tay. Ta biết<line>điều ấy dễ<line>dàng vì loại<pause><page>vải này nếu<line>vắt máy là khô, <$00>
    còn vắt tay sẽ<line>phải phơi trên<line>dây thép, gỉ<pause><page>sét ở dây in<line>một đường<$00>
    rất nhỏ ở lưng<line>trong của áo, <line>xin mời bác sĩ<pause><page>quan sát. <$00>
    ông thử up file ông dùng để test xem

    P/S: thì đã bảo dùng textfield từ đầu cho nhanh mà :))
     

    Các file đính kèm:

  4. asm65816

    asm65816 Mega Man

    Tham gia ngày:
    23/5/09
    Bài viết:
    3,320
    Nơi ở:
    El Sallia
    Tuyệt vời. Đã hiểu tại sao kết quả xuất ra chỉ có 1Kb rồi.
    Lý do rất đơn giản: Save ở dạng Unicode UTF-8 thì bị lỗi trên.
    Cách khắc phục: 1. Lập trình lại
    2. Save text ở dạng Unicode-16LE

    @Anatomy: đây thực sự là 1 chương trình có ích, nó còn có thể dùng để chèn code vào những game khác. Bạn nên phát triển thêm để user có thể lựa chọn bao nhiêu ký tự, bao nhiêu dòng thì chèn code gì. Vì mỗi game có số ký tự mỗi dòng, số dòng mỗi trang khác nhau. Nếu làm được chuyện này thì cộng đồng hack rom rất biết ơn.

    @Chiến binh đạo tặc: Chương trình chèn text vào Rom nó có 2 chức năng chính.

    1. Chèn text vào Rom dưới dạng hex dựa theo file table (sẽ giải thích bên dưới đây)
    2. Sửa lại pointer của đoạn text vừa được chèn. Chức năng này hơi cao cấp hơn nên từ từ sẽ giải thích sau.

    Bây giờ giải thích qua chức năng 1.

    Mỗi game có bộ code hiển thị ký tự riêng, chẳng hạn nó quy định
    (Bên trái là hex code trong Rom, bên phải là ký tự hiện ra màn hình khi game đụng phải hex code đó)

    01=g
    02=a
    03=m
    04=n
    05=e
    06=v

    ...

    Toàn bộ bảng quy ước này nằm trong 1 file xxx.tbl (Table)
    Nếu trong file text ta viết

    gamevn

    Thì chương trình sẽ chèn đoạn code sau vào Rom

    <$01><$02><$03><$05><$06><$04>

    Tức là 01 (g), 02 (a), 03 (m), 05 (e), 06 (v), 04 (n)

    Nếu text là vagemn thì nó sẽ chèn 06, 02, 01, 05, 03, 04

    ........


    Đại khái là như vậy. Có ai làm được không nhỉ?

    (Dĩ nhiên là mấy cái soft sẵn có đã làm được rồi, nhưng nó không đáp ứng được nhu cầu của DL)
     
  5. thief_fighter

    thief_fighter Legend of Zelda Lão Làng GVN

    Tham gia ngày:
    5/8/05
    Bài viết:
    1,169
    Nơi ở:
    The world god only knows
    yep, chương trình này bắt buộc file nhập và xuất phải ở dạng UTF-16, vì nếu UTF-8 và 16 lẫn lộn thì đếm chữ sẽ bị sai, còn nếu chỉ UTF-8 thì ko lưu dc tiếng việt. Nếu sau này muốn đọc / ghi file UTF-8 thì dùng chương trình ban đầu của Antomy là dc

    còn phần sau tôi cũng nghĩ đến rồi, cái này đơn giản ko có gì khó, định làm xong DL rồi thêm mấy cái đấy sau

    chương trình chèn text vào ROM, phần đổi từ text sang các giá trị hex thì ko khó, cái chính là đổi xong sẽ chèn như thế nào. Tôi chưa chèn theo vị trí Hex bao giờ, chắc phải nghiên cứu 1 thời gian
     
  6. asm65816

    asm65816 Mega Man

    Tham gia ngày:
    23/5/09
    Bài viết:
    3,320
    Nơi ở:
    El Sallia
  7. asm65816

    asm65816 Mega Man

    Tham gia ngày:
    23/5/09
    Bài viết:
    3,320
    Nơi ở:
    El Sallia
    Chương trình chèn code có thể fix lỗi này được không:
    khoảng trắng sau những ký tự . , ! ? ... xem như không có được không.
    Mới test thử, nếu nó vẫn đếm luôn khoảng trắng sau những ký tự này thì khi thay vào lại dẫn đến nhiều sai lệch, có hàng chỉ có 1 từ đã thấy code <line> rồi.
     
  8. thief_fighter

    thief_fighter Legend of Zelda Lão Làng GVN

    Tham gia ngày:
    5/8/05
    Bài viết:
    1,169
    Nơi ở:
    The world god only knows
    Ver 1.2 beta
    fix khoảng trắng sau những ký tự . , ! ? ...
    cái này chưa test, ông test thử xem dc ko


    Credit:
    Antomy: lập trình + thiết kế GUI
    thief_fighter: chọc gậy bánh xe + bơm đểu ;))
     

    Các file đính kèm:

  9. hanhnn

    hanhnn T.E.T.Я.I.S

    Tham gia ngày:
    21/12/06
    Bài viết:
    515
    bị lỗi Atlas là lỗi gì vậy
     
  10. asm65816

    asm65816 Mega Man

    Tham gia ngày:
    23/5/09
    Bài viết:
    3,320
    Nơi ở:
    El Sallia
    Phiên bản mới chạy rất tốt! Hầu như không còn lỗi nữa.

    @Hanhnn: giải quyết xong rồi, giờ mới biết không phải là lỗi của Atlas mà là "lỗi" của Rom. Nó trớ trêu quá, DL là Lorom80 nhưng cách tính bộ nhớ của nó hệt như game Hirom. Cả tháng nay không biết, báo cáo Lorom80 với Atlas nên nó tính pointer sai hết trơn.
     
  11. Antomy

    Antomy Mr & Ms Pac-Man

    Tham gia ngày:
    6/5/06
    Bài viết:
    183
    Nơi ở:
    Ho Chi Minh city
    Cám ơn asm65816 và thief_fighter đã hợp tác giúp đỡ hoàn thiện phiên bản mới, tự nhiên thấy vui vui vì công sức mình bỏ ra có ích... :P

    Cái này là làm theo yêu cầu của asm65816 đấy \:D/

    Đúng là lỗi này đây, hic, thế mà mò mẫm gần 2 tiếng không ra. Trong javadoc có ghi rất rõ String định dạng 2 byte, đếm ký tự unicode bằng lệnh
    s.codePointCount(0, s.length());
    chỉ có tác dụng đối với kiểu 2 byte.
    Thế nên đầu vào phải là file format định dạng 2 byte thì mới đếm được.
    Ừm, phần credit phải ghi là cả hai cùng phát triển chứ ở đâu mà chọt gậy bánh xe, không có ông phát hiện chỗ đó thì mọi công sức bỏ ra phung phí hết rồi... b-(

    Cái này không khó. Ông thief_fighter dư sức xử lý cái này...
    Đọc từng ký tự sau đó ánh xạ ra file đích thôi.

    Việc này là hoàn toàn làm được, mình sử dụng XML để làm cầu nối chung gian. Mong muốn của người dùng sẽ được lưu trong file trung gian (XML), chương trình ta khi xử lý sẽ lấy các thông tin trong XML và tiến hành xử lý.
    Cách đây 2 năm có làm qua 1 bài tập như thế bằng C#, nên mình nghĩ chắc Java cũng y như thế...
    Cái khó duy nhất đó chính là số dòng mỗi trang thôi... nếu nó đều hết thì dễ dàng:
    vd: 2 thẻ <A> sẽ tới thẻ <B> rồi lập lại... <A><A><B><A><A><B><...
    Hoặc như yêu cầu của DL cũng làm được, đó là chỉ có trang đầu (2 line) khác với những trang còn lại (3 line).
    Nếu yêu cầu lộn xộn thì hơi khó khăn... ^__^
    @thief_fighter: ông nghĩ sao?
     
  12. thief_fighter

    thief_fighter Legend of Zelda Lão Làng GVN

    Tham gia ngày:
    5/8/05
    Bài viết:
    1,169
    Nơi ở:
    The world god only knows
    mọi người khách sáo quá, cảm ơn cái gì, tất cả vì 1 bản DL việt hóa \:D/

    asm65816 làm đến chap 10 thì release cái patch để mọi người test đi :D

    @Antomy
    theo tôi thì thêm đưa mấy cái text field trực tiếp vào chương trình (vd tag xuống dòng, tag sang trang, số dòng trong 1 trang, số dòng ở trang đầu tiên) để người dùng input vào, như vậy muốn sửa lỗi đơn giản hơn là phải mở file XML ra
    lúc thoát thì lưu config vào file XML, bật chương trình lên thì config trong XML dc load ra.
    Hoàn thiện hơn nữa thì mỗi game có 1 profile riêng, cái này theo tôi hơi rắc rối với ko quan trọng lắm
     
  13. asm65816

    asm65816 Mega Man

    Tham gia ngày:
    23/5/09
    Bài viết:
    3,320
    Nơi ở:
    El Sallia
    Trình chèn code có 1 chút phiền toái.
    Mỗi hàng chỉ được phép có 14 ký tự, trừ 4 ký tự đặc biệt sau được phép ở cột thứ 15:
    . , ! ?

    Nhưng trình hiện tại bao gồm cả ...

    Bạn có thể bỏ ... ra khỏi danh sách 15 không? Nghĩa là muốn nếu nó gặp ... ở cột thứ 15 thì sẽ tự động chuyển xuống hàng hoặc sang trang. ... dài hơn 4 ký tự kia nên sẽ tràn ra khỏi khung nếu ở cột 15.

    À chắc không cần phải phát triển soft chèn code theo table nữa đâu, đã khắc phục được lỗi của soft sẵn có rồi.

    Hiện tại làm xong Sc9, tối nay về làm Sc10 rồi releash lần 1.
     
  14. hanhnn

    hanhnn T.E.T.Я.I.S

    Tham gia ngày:
    21/12/06
    Bài viết:
    515
    Atlas chạy rất tốt đấy chứ
    nếu code thì nên làm trình extract text ra thì hơn vì Atlas dùng rất chuẩn rồi
     
  15. thief_fighter

    thief_fighter Legend of Zelda Lão Làng GVN

    Tham gia ngày:
    5/8/05
    Bài viết:
    1,169
    Nơi ở:
    The world god only knows
    ver 1.2.1 beta
    xóa "..." khỏi list special character

    Credit:
    Antomy: lập trình + thiết kế GUI
    thief_fighter: chém gió + thêm thắt chút đỉnh :-"
     

    Các file đính kèm:

  16. asm65816

    asm65816 Mega Man

    Tham gia ngày:
    23/5/09
    Bài viết:
    3,320
    Nơi ở:
    El Sallia
  17. thief_fighter

    thief_fighter Legend of Zelda Lão Làng GVN

    Tham gia ngày:
    5/8/05
    Bài viết:
    1,169
    Nơi ở:
    The world god only knows
    @Antomy
    đây là source code của ver 1.2.1
    ông có thêm thắt cái gì thì thêm
     

    Các file đính kèm:

    • Main.rar
      Kích thước:
      2.7 KB
      Đọc:
      30
  18. Antomy

    Antomy Mr & Ms Pac-Man

    Tham gia ngày:
    6/5/06
    Bài viết:
    183
    Nơi ở:
    Ho Chi Minh city
    OK, đợi khi nào rảnh lấy ra coi...
    Mà sao ông không nghiên cứu phát triển nó dùng thêm XML đi...
     
  19. thief_fighter

    thief_fighter Legend of Zelda Lão Làng GVN

    Tham gia ngày:
    5/8/05
    Bài viết:
    1,169
    Nơi ở:
    The world god only knows
    đợt này đang vướng mấy thứ, chờ làm xong DL rồi nếu cần thì phát triển tiếp
    với cả ông code GUI chứ ko vẽ = tool nên tôi ko quen
    trước giờ toàn lười vẽ GUI thôi :D
     
  20. asm65816

    asm65816 Mega Man

    Tham gia ngày:
    23/5/09
    Bài viết:
    3,320
    Nơi ở:
    El Sallia
    Chiến binh đạo tặc có thể sửa lại một chút cho trình đếm chữ không:

    Hiện tại trình này đếm luôn cả những dòng comment trong script. Nhờ bạn thêm vào chức năng là không đếm comment, chẳng hạn

    //người lịch sự không nên nói tục
    má kiếp, bực mình quá, không thể không nói tục.

    Thì trình chỉ nên bắt đầu đếm từ "má kiếp...", còn những dòng nào đứng sau // thì ignore.

    Thanks nhiều :D
     

Chia sẻ trang này