轩辕剑吧 关注:230,452贴子:4,294,764
  • 18回复贴,共1

RIX格式?no! rol+ins! 100%完美转码RIX格式

只看楼主收藏回复

https://www.bilibili.com/video/bv1VF411Y7WQ
此为快速烤出的视频!
仙剑1的音乐用了opl2 的特殊的打击乐模式,OpenMPT 不支持,就找了轩辕剑的代替测试了理论,成功!
众所周知,仙剑95版中有些音乐并没有midi版,所以98版中就少了那些音乐(好像是045?),现将rix格式打回原形(即.rol 和 .ins 文件)即可实现100%重置!!
不用看发帖时间! 现在是 12 20 年!(小尾数储存)
下面为图片

左边是轩辕剑的pattern(即.rol 的等效替代) 右边是4号乐器的参数,sbi 文件和.ins 文件等效。

这个是使用与仙剑95相同特殊打击乐模式的 大富翁2 的rix 转出的pattern,因为OpenMPT不支持,我现在还在抓脑袋,你可以明显看出并不是YM3812的常规9通道,而是12个通道。


IP属地:贵州1楼2021-11-08 16:59回复
    IP属地:贵州2楼2021-11-08 17:27
    回复
      2025-06-11 23:15:22
      广告

      唉。。。


      IP属地:贵州4楼2021-11-08 19:57
      回复
        先来理一理一些基本事实吧。
        Rix 格式的音乐从百度百科上看来是使用小尾数法储存的388h 指令,这点可以从http://www.doczj.com/doc/3c9e9f18a8114431b90dd891-2.html 得到印证。 我查了许多资料,其中有一篇文章提到“只需将rix文件写入388h即可发声”,但现在找不到来源,姑且认为这就是软星播放的方式。
        388h 是IBM 兼容机上的一个常用声卡Adilib card的默认端口,这个声卡使用的是YM3812,当时雅马哈较低端的2op FM 合成器,大部分软件习惯只交代388h,实际上389h也是需要以达成控制YM3812。此后来者 创新 通过直接克隆电路的方式兼容了adilib card,并且加入了数字音频播放、手柄接口等功能来快速取代了adilib card 使得声霸卡及其标准迅速统治了IBM 兼容机的声卡市场,这就是为什么会在YM3812 上 同时出现 .rol + .ins 和 .mid + .sbi 格式的原因,是两个统治者的遗产。
        因为早期计算机资源十分有限,不可能像街机那样直接将YM3812 链接在
        ISA 总线上,那样既不可靠(ISA总线速度太快,噪音大),又占用大量io线,且无法满足ISA 地址解码等必须控制,所以adilib 在YM3812 和ISA 总线间加入地址解码电路,使得adilib card 只监听ISA 端口 388 ,当程序向388h 写入一个由adilib硬件决定的指令集时,那些74原件就会解码并转发数据到YM3812 的寄存器。
        (歪路1:这个指令集也并不是x86 系的机器码,我用IDA 看过了……)
        因此,必须理解一个重要的点,RIX文件纪录的通过388h 操作 YM3812 寄存器的指令。现流行的解析OPL音乐的方式,大多是直接看YM3812的寄存器,因为你可以直接到yamaha去下载他们的寄存器参数,为此,必须要先对RIX文件进行第一步转化,也就是要将其从寄存器操作,变成寄存器数据。
        晕了吗?我反正晕了!
        那要怎么完成这个任务呢? 如果是在80-90 年代的话,我会找个逻辑分析仪连接在 74HC 系列原件和YM3812 间看总线和地址线的变化,90年代的话OPL3(ym262)可以直接实时读取寄存器参数,那现在呢?
        DosBox 横空出世!
        将.rix 从左变为.dro (即388h 指令变为寄存器的 1000hz dump)

        此时就可以对照着雅马哈的数据表一个音符一个音符的重构了…………或者是吗?
        这样虽然可行,但不止工作量大,出错的可能性也极端的高。基本不实用。


        IP属地:贵州5楼2021-11-08 19:57
        回复
          为此我暂停许久…………直到近日我在“科幻 学习 上进 网络”途中,看到了国外论坛对另外一种格式 .imf (我 被 开)
          https://keenwiki.shikadi.net/wiki/IMF ID Software Music Format. 的探讨 https://www.lemmingsforums.net/index.php?topic=1840.0
          我才大雾!!!!
          这个格式和rix 大同小异,只不过 rix是直接dump,imf给其修饰了下,但imf已经有工具直接识别寄存器参数,然后比较乐器参数,导出乐谱为 .mid
          而且支持.dro!!!???
          赶紧试了一下!

          henhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh?
          看起来DosBox 的DRO 还分版本?
          没关系,imf维基上还有一个.dro2imf 转化工具。(左为.imf 右为.dro)


          IP属地:贵州6楼2021-11-08 20:01
          收起回复
            没关系,imf维基上还有一个.dro2imf 转化工具。(左为.imf 右为.dro)
            精彩刺激的找你M开始了!看看那里不同,指向大屏幕如果你发现了不同。


            IP属地:贵州7楼2021-11-08 20:02
            回复
              然后?!
              ----------------------------------------------
              以下为日志
              -----------------------------------------------
              PS C:\Users\liu\Desktop\rix\dro2midi-1.5-win32> .\dro2midi.exe .\49.9.imf 48.952.mid
              Input file appears to be in IMF type-0 format.
              File extension is .imf - using 560Hz speed (rename to .wlf if this is too slow)
              Using conversion constant of 49716.0
              // Ch01 <- Inst#067 @ line 127: Marimba [13]
              ** New instrument in use on channel 2
              ** Copy this into inst.txt to assign it a MIDI patch:
              NO 11-31/2D-00/C8-F5/2F-F5/0C/00-00: patch=?
              >> Using similar match: Inst#270 @ line 384: Electric Guitar (muted) [29]
              // Ch02 <- Inst#270 @ line 384: Electric Guitar (muted) [29]
              ** New instrument in use on channel 7
              ** Copy this into inst.txt to assign it a MIDI patch:
              NO 4E-48/0F-06/20-2F/F1-05/02/00-00: patch=?
              >> Using similar match: Inst#055 @ line 110: Oboe [69]
              // Ch07 <- Inst#055 @ line 110: Oboe [69]
              (此处省略超过5k字)
              // Ch01 <- Inst#018 @ line 66: Gunshot [128]
              // Ch01 <- Inst#067 @ line 127: Marimba [13]
              // Ch01 <- Inst#018 @ line 66: Gunshot [128]
              // Ch01 <- Inst#067 @ line 127: Marimba [13]
              // Ch01 <- Inst#018 @ line 66: Gunshot [128]
              Conversion complete. Wrote 48.952.mid
              Total pitchbent notes: 1179
              Total notes: 1179
              Notes still active at end of song: 0
              --------------------------------------------------------------
              日志结束
              ----------------------------------------------------------------
              此时得到了一个 48.952.mid 的文件,这里面纪录了音乐的乐谱。
              等等!
              ** Copy this into inst.txt to assign it a MIDI patch:
              NO 11-31/2D-00/C8-F5/2F-F5/0C/00-00: patch=?
              >> Using similar match: Inst#270 @ line 384: Electric Guitar (muted) [29]
              // Ch02 <- Inst#270 @ line 384: Electric Guitar (muted) [29]
              这是什么玩意?

              也就是说 NO 11-31/2D-00/C8-F5/2F-F5/0C/00-00 这是YM3812 的乐器参数
              此处省略几千字关于 .ins 和 .sbi 乐器格式的研究,感兴趣我再发吧。结论就是
              NO 11-31/2D-00/C8-F5/2F-F5/0C/00-00 等效于 这个sbi文件(红框内是sbi文件的有效值)

              这里有个恶心的点,请注意看偏移地址46、44 45,即倒数第二行的 14 、12 13 列,其和软件列出的 /0C/00-00 刚好是相反的。
              还有些乐器,软件已知是和GM 中那些乐器相近音色的就会直接映射,如下。
              // Ch01 <- Inst#067 @ line 127: Marimba [13]
              没关系,到其目录下找inst.txt 文件 中的第127 行

              等效于 sbi 文件中有效值部分 32 11 44 00 F8 F5 FF 7F 00 00 0E
              如此就可以得到.rix 文件中包含的 .ins 文件
              用OpenMPT 整理整理即可得到
              链接: https://pan.baidu.com/s/1SXBejhbR6w6TfZDQYvW7kw 提取码: wjmi 复制这段内容后打开百度网盘手机App,操作更方便哦
              用OpenMPT 打开。
              这个过程中得到的铺子是接近100%完整的(有些神奇到不能再神奇的pitch bent 可能要手动调一下),乐器也是。
              不过因为OpenMPT 不支持 打击乐模式,要是碰到像仙剑那种用打击乐的还得抓脑袋一下。
              以此留存方式,望诸位多多分享,让圈内得出些更完美的“考古”结果!


              IP属地:贵州8楼2021-11-08 20:06
              回复
                很厉害的样子,我记得很早以前有人分享过rix编码器,还可以内录成mp3


                IP属地:陕西来自Android客户端9楼2021-11-08 20:08
                收起回复
                  2025-06-11 23:09:22
                  广告
                  三个帖子互链防吞,如果都吞的话大量回复或者私信。
                  https://tieba.baidu.com/p/7604967786
                  https://tieba.baidu.com/p/7604960466
                  https://tieba.baidu.com/p/7604964747


                  IP属地:贵州10楼2021-11-08 20:10
                  回复


                    IP属地:北京11楼2021-11-08 20:22
                    收起回复
                      https://www.bilibili.com/video/BV1YT4y19722?pop_share=1
                      此为应用示例1,无损转化出不存在的041.mid。


                      IP属地:贵州12楼2021-11-09 18:22
                      回复
                        轩辕剑2 标题音乐
                        https://www.bilibili.com/video/BV1qL4y1q7Lb/
                        下载地址:
                        链接: https://pan.baidu.com/s/1bWsNWqAGiI8bH_UrGcxLfw 提取码: byrs 复制这段内容后打开百度网盘手机App,操作更方便哦


                        IP属地:贵州13楼2021-11-09 21:41
                        回复
                          臥槽這...太厲害了!


                          IP属地:中国香港14楼2021-11-10 05:43
                          收起回复
                            哇,可了不得!先收藏了!
                            之前费了好大的劲用dro2mid把rix转录dro再转的midi,还手动修了半天…


                            IP属地:黑龙江15楼2021-11-10 20:15
                            收起回复