Multi Thần điện Ninh Tiền Đô 816 bit

Thảo luận trong 'Tin tức - Giới thiệu - Thảo luận chung về game' bắt đầu bởi SPC700, 30/6/23.

  1. LuiBee

    LuiBee Sonic the Hedgehog Lão Làng GVN

    Tham gia ngày:
    15/3/07
    Bài viết:
    4,657
    Nơi ở:
    hội đồng Nin
    3ds giờ nhiu vậy fen.
     
  2. SPC700

    SPC700 Legend of Zelda

    Tham gia ngày:
    1/10/20
    Bài viết:
    1,058
    3DS old tầm 1 củ. Nhưng mà trừ khi cực thích game của nó, chứ không thì đừng mua.
    Màn hình của 3DS lẫn New 3DS đều chán lắm. Tất cả các hệ máy cầm tay của Nin từ trước giờ thì chỉ có mỗi con Switch là tạm được.
    Máy Nin thì nên mua máy nào cắm TV chơi ngon hơn.
     
    F22Raptors and vondutch2550 like this.
  3. SPC700

    SPC700 Legend of Zelda

    Tham gia ngày:
    1/10/20
    Bài viết:
    1,058
    Công khai nguồn bản dịch Tear Ring Saga (PS1, 1999).




    Tear Ring Saga, tên ban đầu là Emblem Saga, được rất nhiều tay chơi game Việt Nam biết đến với tên gọi "Mộc đế 6" hoặc "Mộc đế PS1".
    Đơn giản là do game này có cùng cốt cách với dòng game "Mộc đế" (Fire Emblem) do hãng Ninh Tiền Đô phát hành.

    Emblem Saga là sản phẩm của Kaga Shōzō sau khi ông này rời khỏi Intelligent Systems, công ty phát triển game cho Ninh Tiền Đô, và nổi tiếng nhất qua series Fire Emblem. Kaga Shōzō cũng là người sáng tạo nên dòng game Fire Emblem, nhưng Ninh Tiền Đô lại là bên chi tiền để phát triển cả dòng game này.
    Vì thế, ngay sau khi Kaga Shōzō thành lập công ty riêng, tạo nên Emblem Saga thì giữa Ninh Tiền Đô và ông này đã diễn ra vụ kiện tụng kéo dài đến năm 2005, xoay quanh vấn đề tác quyền.
    Cũng vì lẽ đó mà Emblem Saga được đổi tên thành Tear Ring Saga.
    Bản dịch tiếng Việt này được hoàn thành (mức độ 100%) vào năm 2014. Sau 10 năm, tác giả bản dịch quyết định công khai code và script của bản dịch này để cộng đồng có thể chỉnh sửa lời thoại, xây dựng nên những câu chuyện mới.

    Link:
    https://www.mediafire.com/file/6f9wafsvd5r91jl/Emblem_Saga.rar

    Cũng giống như các phiên bản Fire Emblem khác, đây là game có khối lượng thoại đồ sộ, không thua kém bất cứ trường thiên tiểu thuyết nào.
    Ngoài ra, tác giả bản dịch này còn công khai mã nguồn + script bản dịch tiếng Việt cho nhiều game khác.
    Xem chi tiết ở link bên dưới.

    https://sites.google.com/view/sfc65816

    [​IMG]
     
  4. SPC700

    SPC700 Legend of Zelda

    Tham gia ngày:
    1/10/20
    Bài viết:
    1,058
    Giải mã event trong FE4 và ứng dụng.

    Event trong game này gồm 2 phần, map event và event chính.
    Mỗi chương đều có cấu thành từ 2 khối event này.
    Map event là một khối script chứa các event diễn ra trên map, chẳng hạn như nhân vật A nói chuyện với nhân vật B, hay A đánh B, hay khi chiếm thành, nhân vật nào đó tử trận,.... Map event chỉ được kích hoạt mỗi khi có hoạt động xảy ra trên map. Chẳng hạn như khi có nhân vật bất kỳ di chuyển/hành động.
    Map event được kích hoạt qua routine
    C6/839B: 8B PHB
    C6/839C: 08 PHP
    C6/839D: 4B PHK
    C6/839E: AB PLB
    C6/839F: DA PHX
    C6/83A0: 5A PHY
    C6/83A1: 22348386 JSR $868334
    C6/83A5: AEAB0E LDX $0EAB
    C6/83A8: E220 SEP #$20
    C6/83AA: ADAD0E LDA $0EAD
    C6/83AD: 48 PHA
    C6/83AE: C220 REP #$20
    C6/83B0: AB PLB
    C6/83B1: BD0500 LDA $0005,X
    C6/83B4: A8 TAY
    C6/83B5: E220 SEP #$20
    C6/83B7: BD0700 LDA $0007,X
    C6/83BA: 48 PHA
    C6/83BB: C220 REP #$20
    C6/83BD: AB PLB
    C6/83BE: 22D88386 JSR $8683D8
    C6/83C2: 7A PLY
    C6/83C3: FA PLX
    C6/83C4: 28 PLP
    C6/83C5: AB PLB
    C6/83C6: 6B RTL
    $0EAB ~ $0EAD là pointer dẫn tới khối map event. Khối script này được xử lý ở $8683D8. Chuỗi script này kết thúc bằng 0xFFFF.
    C6/83D8: B90000 LDA $0000,Y
    C6/83DB: C9FFFF CMP #$FFFF
    C6/83DE: F005 BEQ $83E5
    C6/83E0: 20E683 JSR $83E6
    C6/83E3: 80F3 BRA $83D8
    C6/83E5: 6B RTL
    Khi lần đầu tiên CPU đọc từng event thì carry được clear, trong quá trình so sánh thì tùy tình huống mà carry được clear hay set. Trường hợp carry set thì bỏ qua event đó để đọc event tiếp theo.
    C6/83E6: C8 INY
    C6/83E7: 29FF00 AND #$00FF
    C6/83EA: 0A ASL A
    C6/83EB: AA TAX
    C6/83EC: 18 CLC
    C6/83ED: 7CFA83 JMP ($83FA,X)
    C6/83F0: C8 INY
    C6/83F1: 29FF00 AND #$00FF
    C6/83F4: 0A ASL A
    C6/83F5: AA TAX
    C6/83F6: 38 SEC
    C6/83F7: 7CFA83 JMP ($83FA,X)
    83FA:
    dw $84EC
    dw $897C
    dw $8983
    dw $898A
    dw $8991
    $8683FA là table chứa các pointer dẫn tới các event. Tại đây, từng event được cấp cho một giá trị, sau đó giá trị này được so sánh với giá trị ở $0EBC, nếu bằng nhau thì map event mới xảy ra.
    Chẳng hạn event kích hoạt hội thoại nhân vật A nói chuyện với nhân vật B có ID là 0x04, bắt đầu ở địa chỉ $868991.
    Ví dụ: đoạn hội thoại khi Cuan (ID 06) bắt chuyện với Sigurd (ID 01) có cú pháp:
    04 FF 06 00 01 00 FF FF
    30 FF A7 01
    Trong đó:
    - Byte 1: 04 là ID kích hoạt map event hội thoại
    - Byte 2: FF là mã số flag. FF là bỏ qua flag. Nếu là giá trị khác thì sẽ ảnh hưởng tới việc set/reset flag đó, và sẽ ảnh hưởng tới những event sau này. Với giá trị FF thì event hội thoại này không ảnh hưởng gì tới các event sau.
    - Byte 3-4: 0006 là ID của Cuan. Nếu ID này là FFFF thì bất kỳ nhân vật nào bắt chuyện với nhân vật phía sau đều kích hoạt thoại.
    - Byte 5-6: 0001 là ID của Sigurd. Nếu ID này là FFFF thì nhân vật phía trước bắt chuyện với bất kỳ nhân vật nào cũng đều kích hoạt thoại.
    - Byte 7-8 báo kết thúc chuỗi event định nghĩa hội thoại, bắt đầu thực hiện event
    - Byte 9: 30 là ID kích hoạt event chính
    - Byte 10: là ID của flag, FF bỏ qua flag
    - Byte 11-12: ID của event chính
    * Nếu ID của 2 nhân vật đều là FFFF thì mọi nhân vật đều nói chuyện được với nhau, không phân biệt địch ta.
    Đoạn trên có ý nghĩa: khi nhân vật Cuan (0006) bắt chuyện với Sigurd (0001) thì sẽ thi hành event chính có ID là 01A7.
    Tại event chính này, CPU sẽ mở ra hộp thoại, thay đổi nhạc nền, hiển thị avatar nhân vật, text...
    Đầu tiên, ID 04 kích hoạt thoại được $868991, rồi event này được cấp cho ID 000A.
    C6/8991: A90A00 LDA #$000A
    C6/8994: 5CA78686 JMP $8686A7
    C6/86A7: 08 PHP
    C6/86A8: A20700 LDX #$0007
    C6/86AB: 8EB60E STX $0EB6
    C6/86AE: A2B986 LDX #$86B9
    C6/86B1: 8EAB0E STX $0EAB
    C6/86B4: 28 PLP
    C6/86B5: 5CED8486 JMP $8684ED
    ID 000A của event hội thoại được so sánh với $0EBC.
    Giá trị 0007 được ghi vào $0EB6 biểu thị độ dài của chuỗi trong cú pháp của ID hội thoại 04. Để sang event tiếp theo thì vị trí event hiện tại [​IMG] được cộng với giá trị ở $0EB6. Tức, với trường hợp của mã hội thoại 04 thì vị trí hiện tại được cộng thêm 7 byte để CPU đọc sang event tiếp sau đó.
    Trường hợp ID 000A của event hội thoại không bằng với giá trị của $0EBC thì CPU bỏ qua event này để đọc event tiếp sau.
    Trường hợp giá trị ở $0EBC bằng 000A thì CPU sẽ đọc byte tiếp theo của chuỗi, tức đọc byte biểu thị cho flag.
    Nếu byte này khác FF thì CPU sẽ xử lý flag ở $869A50.
    Nếu byte này là FF thì CPU bỏ qua việc xử lý flag, nhảy tới địa chỉ ở $0EAB.
    C6/84ED: B064 BCS $8553
    C6/84EF: E220 SEP #$20
    C6/84F1: CDBC0E CMP $0EBC
    C6/84F4: C220 REP #$20
    C6/84F6: D050 BNE $8548
    C6/84F8: B90000 LDA $0000,Y
    C6/84FB: 29FF00 AND #$00FF
    C6/84FE: C9FF00 CMP #$00FF
    C6/8501: F016 BEQ $8519
    C6/8503: 898000 BIT #$0080
    C6/8506: D008 BNE $8510
    C6/8508: 22509A86 JSR $869A50
    C6/850C: B03A BCS $8548
    C6/850E: 8009 BRA $8519
    C6/8510: 297F00 AND #$007F
    C6/8513: 22509A86 JSR $869A50
    C6/8517: 902F BCC $8548
    C6/8519: 205A85 JSR $855A
    C6/851C: 902A BCC $8548
    C6/851E: B90000 LDA $0000,Y
    C6/8521: 29FF00 AND #$00FF
    C6/8524: C9FF00 CMP #$00FF
    C6/8527: F012 BEQ $853B
    C6/8529: 898000 BIT #$0080
    C6/852C: D006 BNE $8534
    C6/852E: 22D69986 JSR $8699D6
    C6/8532: 8007 BRA $853B
    C6/8534: 297F00 AND #$007F
    C6/8537: 22139A86 JSR $869A13
    C6/853B: 205385 JSR $8553
    C6/853E: B90000 LDA $0000,Y
    C6/8541: 20E683 JSR $83E6
    C6/8544: 5C378C86 JMP $868C37
    C6/8548: 205385 JSR $8553
    C6/854B: B90000 LDA $0000,Y
    C6/854E: 20F083 JSR $83F0
    C6/8551: 8006 BRA $8559
    C6/8553: 98 TYA
    C6/8554: 18 CLC
    C6/8555: 6DB60E ADC $0EB6
    C6/8558: A8 TAY
    C6/8559: 60 RTS
    Đối với event hội thoại, địa chỉ ở $0EAB là $85B6B9, được ghi ở đoạn bên trên.
    C6/86AE: A2B986 LDX #$86B9
    C6/86B1: 8EAB0E STX $0EAB
    C6/855A: 6CAB0E JMP ($0EAB)
    Tại $86B6B9, CPU đọc 2 byte tiếp theo của chuỗi, biểu thị cho ID của nhân vật được bắt chuyện rồi ghi vào $0EAE.
    Sau đó, CPU tiếp tục đọc 2 byte tiếp biểu thị cho ID của nhân vật được bắt chuyện, rồi ghi vào $0EB0.
    Tiếp đến, CPU đọc 2 byte cuối cùng trong chuỗi là FFFF rồi ghi vào
    $0EB2 trước khi nhảy đến routine $869BF2 để check xem các ID nhân vật vừa rồi có đúng là ID cần kích hoạt thoại ở tình huống hiện tại hay không.
    C6/86B9: B90100 LDA $0001,Y
    C6/86BC: 8DAE0E STA $0EAE
    C6/86BF: B90300 LDA $0003,Y
    C6/86C2: 8DB00E STA $0EB0
    C6/86C5: B90500 LDA $0005,Y
    C6/86C8: 8DB20E STA $0EB2
    C6/86CB: 20F29B JSR $9BF2
    C6/86CE: 9021 BCC $86F1
    C6/86D0: AE6F05 LDX $056F
    C6/86D3: ADBD0E LDA $0EBD
    C6/86D6: 22B48484 JSR $8484B4
    C6/86DA: AD6F05 LDA $056F
    C6/86DD: 8DA70E STA $0EA7
    C6/86E0: ADBF0E LDA $0EBF
    C6/86E3: 22B48484 JSR $8484B4
    C6/86E7: AD6F05 LDA $056F
    C6/86EA: 8DA90E STA $0EA9
    C6/86ED: 8E6F05 STX $056F
    C6/86F0: 38 SEC
    C6/86F1: 60 RTS
    Tại routine $869BF2, CPU check ID của nhân vật bắt chuyện được ở ghi ở $0EAE. Nếu ID này là FFFF thì bỏ qua bước check xem có đúng là ID cần thiết ở tình huống hiện tại hay không, rồi check ID của nhân vật được bắt chuyện. Nếu ID này không phải FFFF thì so sánh với ID ở $0EBD (chứa ID đúng của nhân vật bắt chuyện ở tình huống hiện tại). Nếu 2 ID này không khớp nhau thì thoát khỏi routine với carry clear. Nếu 2 ID này khớp nhau thì tiếp tục check ID của nhân vật được bắt chuyện.
    Nếu ID của nhân vật được bắt chuyện là FFFF thì thoát khỏi routine với carry set. Nếu ID này không phải FFFF thì tiếp tục so sánh với ID đúng của nhân vật được bắt chuyện được chứa ở $0EBF. Tại đây, nếu 2 ID này không khớp nhau thì thoát khỏi routine với carry clear.
    Nếu 2 ID này khớp nhau thì CPU tiếp tục check giá trị chứa ở $0EB2. Tại $0EB2 là 2 byte cuối cùng của chuỗi event hội thoại. Giá trị này được so sánh với $0EC1. Nếu bằng nhau, hoặc khi chuỗi kết thúc bằng FFFF thì sẽ thoát routine với carry set.
    C6/9BF2: ADAE0E LDA $0EAE
    C6/9BF5: 3008 BMI $9BFF
    C6/9BF7: ADBD0E LDA $0EBD
    C6/9BFA: CDAE0E CMP $0EAE
    C6/9BFD: D01C BNE $9C1B
    C6/9BFF: ADB00E LDA $0EB0
    C6/9C02: 3008 BMI $9C0C
    C6/9C04: ADBF0E LDA $0EBF
    C6/9C07: CDB00E CMP $0EB0
    C6/9C0A: D00F BNE $9C1B
    C6/9C0C: ADB20E LDA $0EB2
    C6/9C0F: 3008 BMI $9C19
    C6/9C11: ADC10E LDA $0EC1
    C6/9C14: CDB20E CMP $0EB2
    C6/9C17: D002 BNE $9C1B
    C6/9C19: 38 SEC
    C6/9C1A: 60 RTS
    C6/9C1B: 18 CLC
    C6/9C1C: 60 RTS
    Sau khi thoát khỏi routine $869BF2 thì CPU trở vì $8686CE. Trường hợp carry set thì CPU sẽ thi hành mệnh lệnh tiếp theo để gọi event chính.

     
    namff and Sir Artorias like this.
  5. SPC700

    SPC700 Legend of Zelda

    Tham gia ngày:
    1/10/20
    Bài viết:
    1,058
    Một số bạn hỏi sao bản dịch Tear Ring Saga không chơi được trên PS Vita.
    Câu trả lời là: PS Vita không thể chơi được game PS1.
    Tuy nhiên, nó có thể chơi được game của PSP, còn máy PSP thì lại chơi được game PS1.
    Do đó, để chơi bản dịch Tear Ring Saga trên máy PS Vita thì cần phải:
    1) Convert Rom Tear Ring Saga thành dạng Eboot để máy PSP có thể đọc được.
    2) Chạy giả lập PSP trên máy PS Vita (giả lập Andreline)
    Một số hệ máy cầm tay của Ninh Tiền Đô cũng có thể chạy được bản dịch này với giả lập PS1, nhưng không khuyến khích.
    Bởi vì CPU của hệ PS nhà Sony là MIPS, trong khi CPU của các hệ máy cầm tay của nhà Ninh Tiền Đô thường là ARM, và thường yếu hơn nên độ tương thích không cao.
    Mà bây giờ nhìn lại thì thấy bản dịch này (năm 2014) chỉ mới dừng ở mức thủ thuật chứ chưa phải kỹ thuật.
    Còn link bên dưới bao gồm Rom tiếng Việt cho cả PS1 lẫn Eboot cho PSP, nhưng có thêm một số chỗ nghịch ngợm của năm 2024.

    Link:
    Super Easy Tear Ring Saga (mediafire.com)

    a) Di chuyển không tốn lượt
    b) Mua đồ không tốn tiền, nhưng bán thì tăng tiền
    c) Level up với 1 EXP
    d) Độ bền của vũ khí chỉ có tăng chứ không có giảm
    Bản vọc này thích hợp cho người chỉ muốn thưởng thức nội dung của game, hoặc người lúc nào cũng muốn tiền vào mà không thích tiền ra....

     
  6. SPC700

    SPC700 Legend of Zelda

    Tham gia ngày:
    1/10/20
    Bài viết:
    1,058
    Cập nhật bài viết về Dragon Quest XI.
    Mặc dù biết loạt game này từ thập niên 1990 rồi, nhưng mãi tới khi nó xuất hiện trên PS4 năm 2017 thì mới bắt đầu chơi.
    Và nhận thức cũng đã thay đổi.
    Trước khi chơi DQ thì Final Fantasy là nhất.
    Nhưng từ sau khi chơi Dragon Quest thì FF không còn là nhất.

    [​IMG]

    STONE BOAT - Nói về Dragon Quest XI (google.com)
     
  7. Kakeruga

    Kakeruga Legend of Zelda

    Tham gia ngày:
    5/2/23
    Bài viết:
    1,004
    Qúa hay bác ơi, bác có dự định làm bản dịch cho dòng Dragon Quest không.
     
  8. SPC700

    SPC700 Legend of Zelda

    Tham gia ngày:
    1/10/20
    Bài viết:
    1,058
    Có đó bạn. Sẽ làm mấy con huyền thoại Famicom và Super Famicom.
     
  9. Sir Artorias

    Sir Artorias John Marston's Redemption Lão Làng GVN

    Tham gia ngày:
    25/4/13
    Bài viết:
    21,831
    Nơi ở:
    Anor Londo
    Tốt quá bác :x
     
  10. SlayerX

    SlayerX Mega Man Lão Làng GVN

    Tham gia ngày:
    13/12/08
    Bài viết:
    3,205
    Mấy lần nhìn ảnh cụ chụp ban công thấy cái tường đối diện quen quen mà không nhớ ra, rất muốn có 1 lần được diện kiến cụ =))
     
  11. Kakeruga

    Kakeruga Legend of Zelda

    Tham gia ngày:
    5/2/23
    Bài viết:
    1,004
    Tuyệt vời em có cái để thẩm trên giả lập với con dt và mấy con mấy chơi game cầm tay rồi. Khi tàng game của nintendo, ps1 chưa bso giờ khiến em hết chán bác ạ.
     
  12. SPC700

    SPC700 Legend of Zelda

    Tham gia ngày:
    1/10/20
    Bài viết:
    1,058
    Sách đầu năm.


     
  13. phanthieugia

    phanthieugia Moderator Moderator Lão Làng GVN

    Tham gia ngày:
    12/4/08
    Bài viết:
    14,292
    Dragon quest bản nào có cốt truyện hay nhất nhỉ :D
     
  14. SPC700

    SPC700 Legend of Zelda

    Tham gia ngày:
    1/10/20
    Bài viết:
    1,058
    Nhiều người đánh giá bản 3, 5, 6 , 11 là hay nhất.
    Cơ mà story của DQ không tới mức quá xuất sắc đâu. Cái độc của nó là cách dẫn dắt câu chuyện. Mảng này thì DQ cực kỳ đỉnh.
     
  15. phanthieugia

    phanthieugia Moderator Moderator Lão Làng GVN

    Tham gia ngày:
    12/4/08
    Bài viết:
    14,292
    Hồi xưa đi thuê truyện có bộ nhìn nhân vật giống bản 6 lắm
     
  16. Sir Artorias

    Sir Artorias John Marston's Redemption Lão Làng GVN

    Tham gia ngày:
    25/4/13
    Bài viết:
    21,831
    Nơi ở:
    Anor Londo
    Thì là manga của bản 6 mà :))
    [​IMG]
     
    phanthieugia thích bài này.
  17. phanthieugia

    phanthieugia Moderator Moderator Lão Làng GVN

    Tham gia ngày:
    12/4/08
    Bài viết:
    14,292
    Các bản kia có manga tiếng việt ko nhể
    Ko đọc đc eng :v
     
  18. phanthieugia

    phanthieugia Moderator Moderator Lão Làng GVN

    Tham gia ngày:
    12/4/08
    Bài viết:
    14,292
    Bạn định dịch bản mấy vậy? :D
     
  19. Sir Artorias

    Sir Artorias John Marston's Redemption Lão Làng GVN

    Tham gia ngày:
    25/4/13
    Bài viết:
    21,831
    Nơi ở:
    Anor Londo
    Manga của 6 hay 7 thì mình chịu không biết có scanlate không, nhưng Dai và Roto 1, 2 có hết mà :))

    Mà thôi trả lại thớt cho bác @SPC700 làm việc :D
     
    phanthieugia thích bài này.
  20. SPC700

    SPC700 Legend of Zelda

    Tham gia ngày:
    1/10/20
    Bài viết:
    1,058
    Dự định sẽ dịch hết cả bản FC và SFC.
     

Chia sẻ trang này