怀旧玩家吧 关注:636贴子:3,100
  • 13回复贴,共1

青之天外汉化版发布前的一些话

只看楼主收藏回复

青之天外是一款传统RPG游戏,中文名:天外魔境——青之天外 日文名称:オリエンタルブルー -青の天外,该作是系列史上第一款没有固定主角姓名和性格的游戏,玩家可以选择16岁男孩或者16岁女孩进行游戏,他们的默认名字为Tenran和Aoi,当然玩家可以随意改动名字。在该作中,玩家将跨越古日本、中国、泰国、蒙古各地,在冒险过程中,玩家将碰到11个冒险伙伴,而玩家所选择的主角性别将会影响到这些伙伴是否加入冒险队伍。游戏中有大致的情节主线,不过整体上则是一款自由度极高的游戏,玩家可以自由决定冒险的地方和自己的任务。《Oriental Blue》还有一个日记系统,将以主角的视角记录过去发生的事情。玩家还可以通过GBA连线交换日记。在战斗系统方面,游戏中将有魔法石系统,玩家可以将其单独使用发动魔法,或者组合使用以产生更强的魔法。这些魔法石同样也可以通过GBA连线互相交换。
如今这款游戏已经距离发布十年之久了,而汉化这游戏是始于六年多以前,汉化了大半年后翻译团队解散,汉化终止。5年后,我再次找到曾经参与翻译的mitsubuqi重新商议翻译剩下的30%多的文本。chyt认识了六七年的老朋友了,很无奈地被我拉了回来继续做后续工作,因为他工作忙,没时间盯着进度,甚至让他给我做了一款一键导入工具,方便我更改和替换文本。
2012年10月汉化结束,但是因为存在部分bug,决定放弃发布,改为群内小范围分享。
2013年6月汉化rom泄露,被迫将本已尘封的事情重新提起,经过谨慎讨论,决定发布无责任汉化版,游戏有bug,届时请谨慎选择下载和体验。


IP属地:湖南1楼2013-07-08 09:30回复
    //小字体判断是否双码地方,并跳过偏移量(范围?)
    081BDC00 4645 mov r5, r8
    081BDC02 782D ldrb r5, [r5, 0h]
    081BDC04 1E68 sub r0, r5, 1h
    081BDC06 4488 add r8, r1
    081BDC08 0400 lsl r0, r0, 10h
    081BDC0A 0C00 lsr r0, r0, 10h
    081BDC0C 285B cmp r0, 5Bh
    081BDC0E D0F7 beq 81BDC00h ;前面到这里是否是无用段呢?
    081BDC10 0400 lsl r0, r0, 10h ;入口,先把改动前占用的指令还原
    081BDC12 0C00 lsr r0, r0, 10h
    081BDC14 28F5 cmp r0, F5h ;r0-1为编码变量
    081BDC16 D908 bls 81BDC2Ah ;如果不是FX双码则跳转判断是否8X双码
    081BDC18 072D lsl r5, r5, 1Ch
    081BDC1A 0D2D lsr r5, r5, 14h ;r5 << 8 r5作用???
    081BDC1C 4641 mov r1, r8 ;r8作用???
    081BDC1E 7808 ldrb r0, [r1, 0h] ;读取下一码????
    081BDC20 4305 orr r5, r0
    081BDC22 2001 mov r0, 1h
    081BDC24 4480 add r8, r0
    081BDC26 FCDCF65E bl 801C5E2h ;看不懂....
    081BDC2A 2889 cmp r0, 89h ;再判断是否8B ~ 8D区
    081BDC2C D905 bls 81BDC3Ah ;如果不是,跳转去原样返回
    081BDC2E 288C cmp r0, 8Ch ;再判断是否8B ~ 8D区
    081BDC30 D803 bhi 81BDC3Ah ;如果不是,跳转去原样返回
    081BDC32 3505 add r5, 5h ;如果是双码区,则
    081BDC34 06ED lsl r5, r5, 1Bh
    081BDC36 0CED lsr r5, r5, 13h ;r5 = 0x500
    081BDC38 E7F0 b 81BDC1Ch
    081BDC3A 46F7 mov pc, lr //无用段,保留的
    081BDC40 3601 add r6, 1h ;无用段
    081BDC42 3C03 sub r4, 3h
    081BDC44 0724 lsl r4, r4, 1Ch
    081BDC46 0D24 lsr r4, r4, 14h
    081BDC48 1824 add r4, r4, r0
    081BDC4A 0064 lsl r4, r4, 1h
    081BDC4C 205C mov r0, 5Ch
    081BDC4E 7070 strb r0, [r6, 1h]
    081BDC50 2000 mov r0, 0h
    081BDC52 46F7 mov pc, lr
    081BDC54 0724 lsl r4, r4, 1Ch
    081BDC56 0D24 lsr r4, r4, 14h
    081BDC58 7830 ldrb r0, [r6, 0h]
    081BDC5A 46F7 mov pc, lr
    081BDC5C 0000 lsl r0, r0, 0
    081BDC5E 285B cmp r0, 5Bh
    081BDC60 D1D6 bne 81BDC10h
    081BDC62 2520 mov r5, 20h
    081BDC64 E7D4 b 81BDC10h
    //传送剩下的2/3部分字模的上部分,下半部分就把字模地址改变后,让程序自己传送
    081BDC70 0C09 lsr r1, r1, 10h ;入口,r1 = ???,移位得出单码后
    081BDC72 295C cmp r1, 5Ch ;判断第二码是否改动过的5C
    081BDC74 D11C bne 81BDCB0h ;如果不是则跳转到...
    081BDC76 6852 ldr r2, [r2, 4h]
    081BDC78 3E03 sub r6, 3h
    081BDC7A 7831 ldrb r1, [r6, 0h] ;取第一码
    081BDC7C 298A cmp r1, 8Ah ;判断是否8B ~ 8D区
    081BDC7E D903 bls 81BDC88h
    081BDC80 298D cmp r1, 8Dh
    081BDC82 D801 bhi 81BDC88h ;不是8B ~ 8D区的,偏移计算不一样,跳转
    081BDC84 3102 add r1, 2h
    081BDC86 E000 b 81BDC8Ah
    081BDC88 3903 sub r1, 3h ;可惜字模地址是定死01 ~ 05,F6~FF,8B~8D的
    081BDC8A 7873 ldrb r3, [r6, 1h] ;取第二码
    081BDC8C 0209 lsl r1, r1, 8h
    081BDC8E 18C9 add r1, r1, r3
    081BDC90 2300 mov r3, 0h
    081BDC92 E000 b 81BDC96h ;这里应该可以去掉
    081BDC94 46C0 nop
    081BDC96 7033 strb r3, [r6, 0h] ;但是想不明白就是为什么存0进去
    081BDC98 3603 add r6, 3h ;,难道是用了前一字节?
    081BDC9A 3808 sub r0, 8h ;显存位置回退到字模上半部分
    081BDC9C 0509 lsl r1, r1, 14h ;去掉编码最高4bit
    081BDC9E 0BC9 lsr r1, r1, Fh ;然后*2
    081BDCA0 1889 add r1, r1, r2 ;加上指针偏移地址
    081BDCA2 3110 add r1, 10h ;偏移修正
    081BDCA4 C908 ldmia [r1]!, r3 ;传送字模的,不多说了
    081BDCA6 C008 stmia [r0]!, r3
    081BDCA8 C908 ldmia [r1]!, r3
    081BDCAA C008 stmia [r0]!, r3
    081BDCAC 2200 mov r2, 0h ;不明白这里为什么赋值0,结束符意思?
    081BDCAE 46F7 mov pc, lr
    081BDCB0 6812 ldr r2, [r2, 0h] ;原样转处代码还原
    081BDCB2 00C9 lsl r1, r1, 3h ;lsl 3原因是0x10 - 3 = D
    081BDCB4 46F7 mov pc, lr
    081BDCB6 46F7 mov pc, lr //大字字码后面加5C
    081BDCC0 3D02 sub r5, 2h ;入口
    081BDCC2 7828 ldrb r0, [r5, 0h] ;先读取第一码
    081BDCC4 288A cmp r0, 8Ah
    081BDCC6 D901 bls 81BDCCCh
    081BDCC8 288D cmp r0, 8Dh ;判断是否8B ~ 8D区
    081BDCCA D901 bls 81BDCD0h
    081BDCCC 28F6 cmp r0, F6h ;判断是否FX区双码
    081BDCCE D902 bls 81BDCD6h ;如果不是,则原样跳转回去
    081BDCD0 205C mov r0, 5Ch
    081BDCD2 70A8 strb r0, [r5, 2h] ;大字双码后面添加一个5C
    081BDCD4 3501 add r5, 1h ;并且把存编码的内存地址也+1
    081BDCD6 2000 mov r0, 0h ;后面是原样返回
    081BDCD8 3502 add r5, 2h ;还原r5
    081BDCDA 7028 strb r0, [r5, 0h]
    081BDCDC 46F7 mov pc, lr //大字字模偏址调整,及非剧情字码后接5C(非剧情???)
    081BDCE0 2C8A cmp r4, 8Ah ;入口
    081BDCE2 D903 bls 81BDCECh
    081BDCE4 2C8D cmp r4, 8Dh ;先判断是否8X区
    081BDCE6 D801 bhi 81BDCECh ;不是则认为是0X,FX的双码区
    081BDCE8 3405 add r4, 5h ;不是则添加偏移实质接在FX区后面,8B+5 = 90
    081BDCEA E002 b 81BDCF2h
    081BDCEC 20F6 mov r0, F6h
    081BDCEE 4284 cmp r4, r0 ;和F6比较,
    081BDCF0 D918 bls 81BDD24h ;不是FX区双码
    081BDCF2 7870 ldrb r0, [r6, 1h] ;读第二码
    081BDCF4 285C cmp r0, 5Ch
    081BDCF6 D00D beq 81BDD14h ;如果=5C就???
    081BDCF8 480D ldr r0, [pc, 34h] ;=0x200B99E(33601950) )h
    081BDCFA 4286 cmp r6, r0 ;
    081BDCFC D90A bls 81BDD14h
    081BDCFE 480D ldr r0, [pc, 34h] ;=0x200BAFF(33602303) ? "???
    081BDD00 4286 cmp r6, r0
    081BDD02 D807 bhi 81BDD14h ;如果不在,则???
    081BDD04 3E02 sub r6, 2h ;如果是目标区域,则存放字符的内先后退2Byte
    081BDD06 7870 ldrb r0, [r6, 1h]
    081BDD08 7030 strb r0, [r6, 0h]
    081BDD0A 78B0 ldrb r0, [r6, 2h]
    081BDD0C 7070 strb r0, [r6, 1h] ;把后续的两字节编码前移一个字节
    081BDD0E 3601 add r6, 1h
    081BDD10 205C mov r0, 5Ch
    081BDD12 7070 strb r0, [r6, 1h] ;此时存放5C到[r6_orig]
    081BDD14 7830 ldrb r0, [r6, 0h] ;读取第二码,如果存在5C则这么做了
    081BDD16 3C03 sub r4, 3h ;可惜字模地址是定死01 ~ 05,F6~FF,8B~8D的
    081BDD18 0724 lsl r4, r4, 1Ch
    081BDD1A 0D24 lsr r4, r4, 14h ;算字模偏移地址
    081BDD1C 1824 add r4, r4, r0
    081BDD1E 0064 lsl r4, r4, 1h ;字符宽度*2
    081BDD20 2000 mov r0, 0h ;为啥要赋值为0
    081BDD22 46F7 mov pc, lr
    081BDD24 0724 lsl r4, r4, 1Ch ;0X双码处理,照搬原来代码
    081BDD26 0D24 lsr r4, r4, 14h ;(code & 0xF) * 0x100
    081BDD28 7830 ldrb r0, [r6, 0h]
    081BDD2A 46F7 mov pc, lr 081BDD30 0200B99E ;常量,判断非剧情的内存地址
    081BDD34 0200BAFF ;常量,判断非剧情 //小字体导入地方,双码后加5C
    081BDD40 3801 sub r0, 1h ;
    081BDD42 4D0F ldr r5, [pc, 3Ch] ;=0x8FC5980(150755712) """
    081BDD44 42AC cmp r4, r5 ;是否是M30之后偏移
    081BDD46 D910 bls 81BDD6Ah ;不是,则原样返回
    081BDD48 4D0E ldr r5, [pc, 38h] ;=0x8FDB570(150844784)
    081BDD4A 42AC cmp r4, r5 ;是否是M50之前偏移?
    081BDD4C D80D bhi 81BDD6Ah ;不是,则原样返回
    081BDD4E E002 b 81BDD56h
    081BDD50 0000 lsl r0, r0, 0
    081BDD52 0000 lsl r0, r0, 0
    081BDD54 0000 lsl r0, r0, 0
    081BDD56 7805 ldrb r5, [r0, 0h] ;读取上一字节
    081BDD58 2D8A cmp r5, 8Ah
    081BDD5A D901 bls 81BDD60h
    081BDD5C 2D8D cmp r5, 8Dh
    081BDD5E D901 bls 81BDD64h
    081BDD60 2DF6 cmp r5, F6h
    081BDD62 D902 bls 81BDD6Ah ;如果不是8X,FX双码,则原样返回
    081BDD64 7041 strb r1, [r0, 1h] ;存r1到[r0_orig]
    081BDD66 215C mov r1, 5Ch ;把当前码变为5C
    081BDD68 3001 add r0, 1h ;存5C到[r0_orig+1]
    081BDD6A 7041 strb r1, [r0, 1h] ;原样返回
    081BDD6C 3002 add r0, 2h ;因为-1了,所以+2,还原原来的+1
    081BDD6E 46F7 mov pc, lr
    [081BDD80]=M30首,[081BDD84]=M50末
    //小字体相关
    081BDDC0 285B cmp r0, 5Bh ;入口,r0+1为编码
    081BDDC2 D101 bne 81BDDC8h
    081BDDC4 3301 add r3, 1h ;r3=??? 非剧情文本有部分是5C接在双码两字节之间
    081BDDC6 7819 ldrb r1, [r3, 0h] ;所以读取下字节
    081BDDC8 46F7 mov pc, lr
    081BDDCA 0000 lsl r0, r0, 0
    081BDDCC 0000 lsl r0, r0, 0
    081BDDCE 0000 lsl r0, r0, 0
    081BDDD0 285B cmp r0, 5Bh ;无用段?
    081BDDD2 D100 bne 81BDDD6h
    081BDDD4 3201 add r2, 1h
    081BDDD6 0600 lsl r0, r0, 18h
    081BDDD8 0E00 lsr r0, r0, 18h
    081BDDDA 28F5 cmp r0, F5h
    081BDDDC D901 bls 81BDDE2h
    081BDDDE 28FF cmp r0, FFh
    081BDDE0 46F7 mov pc, lr
    081BDDE2 2889 cmp r0, 89h
    081BDDE4 D901 bls 81BDDEAh
    081BDDE6 288C cmp r0, 8Ch
    081BDDE8 D9F9 bls 81BDDDEh
    081BDDEA 2804 cmp r0, 4h
    081BDDEC 46F7 mov pc, lr


    IP属地:湖南8楼2013-07-08 16:29
    回复
      岚爷一生推


      IP属地:河北9楼2013-07-14 19:34
      回复
        膜拜楼主感谢汉化组


        IP属地:安徽10楼2013-08-24 18:55
        收起回复
          我想问一下这些东西怎么用?


          IP属地:辽宁来自手机贴吧11楼2013-09-20 16:33
          收起回复
            有了你们的努力,我们的游戏世界才充满乐趣,真心感谢!


            IP属地:青海来自Android客户端12楼2013-11-21 17:42
            收起回复
              今天我才发现进了一个不得了的吧,高考完就跟吧主混了


              IP属地:山东来自手机贴吧13楼2013-11-27 11:23
              收起回复
                下了 虽然 感觉比较难玩 但 还是很有意思的。 加油
                |ㄏ( ̄▽ ̄)这是肥音 你懂嘛
                |∑(っ°Д°;)っ我错了 我错了 这不是肥音别拖走我
                |°Д°;)っ|害药噗密!
                |°;)っ来。。个人啊。。
                |っ啊。。
                |-------
                   


                IP属地:江西来自Android客户端14楼2013-12-11 09:41
                回复