《幻翼传说:露卡的魔兽教室》光盘召唤术完整原理解析、、、
风色幻想吧
全部回复
仅看楼主
吧务
level 14
本帖在风色幻想吧和幻翼传说吧同时发布。
放一些神奇的召唤结果
镇楼

2025年11月10日 11点11分 1
吧务
level 14
目录
一、基本原理
二、召唤算法详解
三、召唤用虚拟光盘下载
四、虚拟光盘制作教程(选修)
五、后记
2025年11月10日 11点11分 2
吧务
level 14
一、基本原理
在缎带镇魔兽进化所,有一项神奇的功能,就是光盘召唤术:在光驱里放一张光盘,就可以召唤出一只魔兽。
那么究竟什么样的光盘能召唤出什么样的魔兽呢?经过算法解析,召唤结果由三个参数决定:
CDLabel-光盘卷标
CDTracks-音轨数
CDAllTime-音乐总时长
如果两张光盘的内容不同,但是这三个参数都恰好一致,那么这两张光盘就被认为是相同的光盘。
在使用实体光盘的年代,想让光盘的这三项参数完全对上,比彩票中大奖还难。但是现在不一样了,有了虚拟光盘,想要什么样的光盘参数,我们都可以人为地做出来。
2025年11月10日 11点11分 3
吧务
level 14
在介绍详细算法之前,先解释一些相关内容。
1.虚拟光盘怎么使用?
虚拟光盘需要用虚拟光驱软件加载,最常见的是Daemon Tools,还有AlCohol 120%等其他软件。具体操作我不打算在这里长篇介绍,这是个很常用的工具,网上教程应该是一大把。风色幻想老玩家对虚拟光驱应该都很熟悉,尤其是经历过StarForce那个年代的人。
2.召唤结果是可以S/L的。
有些光盘只能召唤出固定的魔兽,也有些光盘是从两种魔兽中随机召唤出一种。至于魔兽的初始属性,那就更是有随机的空间。看到召唤结果之后如果不满意,可以按ESC关闭界面,这次结果不会保留,还可以重新召唤,刷新召唤结果。
2025年11月10日 11点11分 4
吧务
level 14
3.同一张光盘,召唤过一次之后,再次召唤,就召唤不出任何东西了,只会提示“这个石盘已无魔兽迹象”。召唤的时候是不是对光盘造成了什么物理损伤?
这个尽管放心,召唤术是不会损伤光盘的。
同一张光盘不能重复召唤的原理很简单,就是把已经召唤过的光盘信息记录下来。每次召唤的时候都会先对比这张光盘信息是否已经被记录过,如果是曾经记录过的,就不能再召唤了。
这一点也很好验证,就是重新开始一局新游戏,会发现这张光盘又能召唤了。这就说明记录信息都是跟着存档走的。
顺便再说一件比较有趣的事情,就是这个光盘信息是怎么记录的呢?
比如说某张光盘,CDLabel="黯姐姐",CDTracks=1,CDAllTime=36074,记录的信息就是把这三条连起来,形成一个字符串[黯姐姐136074]。
你可能猜到会出现什么神奇的BUG了。假如另一张光盘,CDLabel="黯姐姐1",CDTracks=3,CDAllTime=6074,连起来也是[黯姐姐136074]。这两张盘的字符串是一样的,就会互相冲突,用了其中一张光盘召唤,另一张就无法再召唤出来。但是这两张光盘的参数的确是不同的,召唤出来的结果也不一样。
当然了,两张不同的光盘互相冲突这种事情是极小概率事件,不可能遇到的,除非你故意要去撞。不过也是基于这一点,我做光盘卷标的时候会避免使用数字作为结尾。
2025年11月10日 11点11分 5
吧务
level 14
4.光盘召唤术有个设计上貌似很人性化,实际很烦人的设定,就是弹出光驱。
召唤的时候要按两次“开始”。第一次按之前,提示信息是“请放入要招唤的石盘”。
第一次按“开始”之后,光驱就会弹出来,提示信息是“请放入CD片之后按开始钮”。
放入光盘,合上光驱,再按“开始”,才能召唤。
《幻翼传说》是我玩过唯一一部会弹光驱的游戏,尤其是当年的电脑都有物理光驱,这个光驱自动弹出的功能实在是烦死人的。
它设计的时候初衷肯定很好:既然你召唤要用到光盘,我就帮你把光驱弹出来,方便你直接放光盘,节省你一步操作。
但是我很讨厌一款游戏乱操作我的硬件,知不知道这样很没有边界感?万一光驱突然弹出来打到什么东西怎么办?什么时候放光盘我自己不会决定吗?
现在电脑基本都抛弃物理光驱了,但是虚拟光驱照样会弹出。所以召唤的时候一定要注意操作顺序:第一次按下开始,看到“请放入CD片之后按开始钮”的提示后,要从游戏画面中切出来,这时候加载虚拟光盘,然后回到游戏界面,再点一次开始,才能召唤出
正确的
魔兽。
如果顺序错了,提前把光盘装进去,连按两次开始,召唤的时候光盘已经被弹了出来,光驱是空的,召唤出来的魔兽就会与预期不符。
这里还有个很诡异的问题,光驱是空的也能召唤吗?
在我的印象里,以前应该是不能进行无盘召唤的。但是现在确实可以做到无盘召唤,我怀疑这个可能与虚拟光驱软件的设定有关。
无盘召唤时,CDTracks=0,CDLabel和CDAllTime沿用上一次召唤时的数据(如果这是第一次召唤,那就都是0),这怎么看起来都像是卡BUG了。正常的光盘CDTracks至少也得是1。
那么无盘召唤可以利用起来吗?用倒是能用,但是意义不大,召唤不出来什么好东西的。
2025年11月10日 11点11分 6
吧务
level 14
二、召唤算法详解
召唤结果分为两类,一类是特殊光盘,另一类是普通光盘
所谓特殊光盘,就是程序中预存了36组光盘参数。如果使用的光盘恰好能对上其中的一组,就可以召唤出对应的魔兽。
特殊0:星星
CDLabel="Audio CD";CDTracks=21;CDAllTime=17916034
特殊1:凯贝洛斯
CDLabel="";CDTracks=1;CDAllTime=18432015
特殊2:FY人
CDLabel="";CDTracks=12;CDAllTime=23292000
特殊3:ASUNA
CDLabel="";CDTracks=16;CDAllTime=22686027
特殊4:古代恶魔
CDLabel="";CDTracks=1;CDAllTime=14370060
特殊5:天使
CDLabel="";CDTracks=20;CDAllTime=16650058
特殊6:旧必杀兔
CDLabel="";CDTracks=6;CDAllTime=11586070
特殊7:恶魔猫
CDLabel="";CDTracks=6;CDAllTime=19440001
特殊8:骷髅D
CDLabel="";CDTracks=22;CDAllTime=24258066
特殊9:必杀兔
CDLabel="";CDTracks=27;CDAllTime=26532065
特殊10:朵拉
CDLabel="";CDTracks=12;CDAllTime=16596054
特殊11:星星
CDLabel="";CDTracks=2;CDAllTime=90062
特殊12:RIDER
CDLabel="";CDTracks=1;CDAllTime=7818010
特殊13:RIDER
CDLabel="";CDTracks=6;CDAllTime=12582058
特殊14:RIDER
CDLabel="";CDTracks=1;CDAllTime=23358008
特殊15:路人S·T
CDLabel="";CDTracks=29;CDAllTime=23820056
特殊16:螃蟹
CDLabel="";CDTracks=1;CDAllTime=25986000
特殊17:螃蟹
CDLabel="";CDTracks=13;CDAllTime=21732061
特殊18:螃蟹
CDLabel="";CDTracks=10;CDAllTime=15960066
特殊19:普洛斯
CDLabel="";CDTracks=1;CDAllTime=26382050
特殊20:菲尼克斯
CDLabel="";CDTracks=1;CDAllTime=17298053
特殊21:古代恶魔
CDLabel="";CDTracks=1;CDAllTime=23850020
特殊22:巨龙
CDLabel="";CDTracks=1;CDAllTime=21624010
特殊23:星星
CDLabel="";CDTracks=2;CDAllTime=25416010
特殊24:必杀兔
CDLabel="";CDTracks=12;CDAllTime=19740029
特殊25:宝箱怪物
CDLabel="";CDTracks=1;CDAllTime=20460042
特殊26:路人S·T
CDLabel="";CDTracks=1;CDAllTime=24744066
特殊27:普普鲁(幻翼龙形态)
CDLabel="";CDTracks=2;CDAllTime=23442062
特殊28:FY人
CDLabel="";CDTracks=1;CDAllTime=23640072
特殊29:古代巨神
CDLabel="";CDTracks=1;CDAllTime=25512058
特殊30:梦魔
CDLabel="";CDTracks=1;CDAllTime=16182003
特殊31:ASUNA
CDLabel="";CDTracks=1;CDAllTime=24252001
特殊32:RIDER
CDLabel="";CDTracks=1;CDAllTime=25572074
特殊33:究极铁板
CDLabel="";CDTracks=2;CDAllTime=102062
特殊34:必杀兔
CDLabel="";CDTracks=2;CDAllTime=102003
特殊35:骷髅D
CDLabel="";CDTracks=12;CDAllTime=18192073
2025年11月10日 11点11分 7
吧务
level 14
如果对不上以上任何一组参数,那么就是普通光盘,计算方法如下:
把CDLabel每个字节的编码相加,再加上CDTracks和CDAllTime,得到一个总和。
其中字节编码相加时,如果某个字节在0~127范围内,就是正常计算;如果在128~255范围内,就要减去256,变成负数,范围是-128~-1。
然后把这个总和÷30,取余数。余数有31种可能,正常的余数是0~29,被除数是负数时计算出的余数可能出现负数(当然也可能恰好是0),所有负余数算作同一情况。根据余数的不同就有31组不同的召唤结果。
例如某张光盘CDlabel="Tieba",CDTracks=1,CDAllTime=37。字母的ASCII码都在127以内,这5个字母的ASCII码依次是十六进制54 69 65 62 61,转化成十进制是84,105,101,98,97,计算(84+105+101+98+97+1
+3
7)÷30=17……13,得到余数13。
又如某张光盘CDlabel="梅鲁姐姐",CDTracks=1,CDAllTime=37。每个汉字的GBK码是两个字节,这4个字共8个字节,依次是十六进制C3 B7 C2 B3 BD E3 BD E3,转化成十进制195,183,194,179,189,227,189,227,很巧地全部超过了128,所以全都要减去256,变成负数:-61,-73,-62,-77,-67,-29,-67,-29,计算(-61-73-62-77-67-29-67-29+1+37)÷30=-14……-7,得到余数-7,这就是负余数。(不要问余数为什么不是23,这不是纯数学,计算机的底层逻辑就是这样)
以下是每种余数对应的召唤结果,其中有些只有固定一种魔兽,也有些是从两种魔兽中随机召唤出一种:
余数0:胶质怪/爱心胶质怪
余数1:火蜥蜴
余数2:妖精
余数3:迷之生物/雪人
余数4:石巨人
余数5:大尾蝌蚪/巨夹蟹
余数6:火球怪
余数7:炙雀
余数8:角虫
余数9:南瓜怪
余数10:妖狐/雷嚎
余数11:胶质怪
余数12:半人鱼/食人鲨
余数13:小海马/大眼金鱼
余数14:斯拉魔
余数15:球茎怪
余数16:蜥蜴兽人/拉米亚
余数17:长爪怪/双角兽人
余数18:胶质怪
余数19:雪人/火球怪
余数20:胶质怪
余数21:胶质怪/爱心胶质怪
余数22:斯拉魔
余数23:雷嚎
余数24:妖狐
余数25:火蜥蜴
余数26:妖精
余数27:雪人
余数28:火球怪
余数29:加拉斯
负余数:妖狐
2025年11月10日 11点11分 8
吧务
level 14
三、召唤用虚拟光盘下载
算法写这么详细,估计很多人也不会去看,直接把做好的虚拟光盘传到网盘给大家下载才是重点。
36种特殊光盘,这个当然每种只能做出一张;31组普通光盘,理论上每组都可以做出无数张,我每组做了10张,应该够用吧(如果不够的话,可以学习下一节内容自己做光盘)。
下载地址:[有效] https://pan.baidu.com/s/1x1x4_vOasKfQovCv3Vs2sg?pwd=Luka
虚拟光盘有不同的格式,我优先用了iso格式。但是iso格式光盘CDTracks只能是1,有些特殊光盘要求CDTracks>1,所以只能做成cue+bin格式,你会看到文件夹里有两个文件,两个文件放在一起才是完整的一张光盘。
2025年11月10日 11点11分 9
吧务
level 14
四、虚拟光盘制作教程(选修)
上传到网盘的资源也许会有挂掉的一天,所以我把这些光盘的做法写在这里。也许多年以后,我上传的虚拟光盘都没了,我本人也失联了,但如果我这篇帖子还在,就有人还可以照着教程把光盘做出来。(如果再悲观一点,这篇帖子也未必不会挂掉。)
使用的工具是Winiso,它的功能虽然不是太完美,但是做个召唤用的光盘还是有余的。
光盘有不同的规格,虽然都能用,但是具体参数不太一样。我们选择默认的ISO9660、CD700MB,一般来说,新安装的Winiso,只要别乱改,都会是这个设置(我用过不同版本的Winiso,其中6.4版和7.1版都可以选择规格;5.3版不能选,不知道默认的是什么,反正做出来的光盘就是会略有差异)。以下提到的具体数字都只对这种规格的光盘有效。
先说一个注意事项,如果要用Winiso修改已做好的光盘,一定要使用“另存为”而不是“保存”。
另存为相当于重新建立了一张新光盘,保存相当于在原光盘上做擦写操作。Winiso的擦写功能是有点奇怪的,尤其是擦除,并不会把被擦除文件占用的空间释放出来,所以这样修改之后的光盘大小基本上不会符合预期。甚至说擦除一个文件之后,光盘大小不减反增,这也是可能发生的事情。
以下分为三步,由浅入深来学习设定光盘三条参数。
2025年11月10日 11点11分 10
吧务
level 14
1.制作普通光盘(仅修改CDLabel)
做普通光盘的时候,只要做成空盘就行了,光盘里不需要放任何文件,这样节省空间,只要改变CDLabel就可以做出不同的余数。
对于空盘,CDTracks=1,CDAllTime=37,这两个数字是固定的,我们可以计算一下用什么样的CDLabel可以得到我们想要的余数。
例如想要让余数是0,那么CDLabel就应该是22、52、82、112等等,其中ASCII码22是特殊符号,不能用;52是数字4,82是大写字母R、112是小写字母p,这些都可以用作CDLabel。单个字母是这样,双字母组合就多了,例如AM,65+77也可以,同理,BL、CK等等都可以。
如果想让余数是1,就可以使用5、S、q、AN、BM、CL等等。
……
做负余数稍微难一些,因为只有用汉字才能实现,可以自行检索汉字的GBK编码,挑选一些负得比较大的汉字。实在不会做也无所谓,反正负余数召唤出来的是妖狐,余数24召唤出来的也是,大不了多做几张余数24的光盘也就得了。
这个CDLabel光盘卷标到底是个什么东西呢?
如图所示,这个就是光盘卷标,这是写在光盘内部的信息,直接去修改虚拟光盘的文件名是没用的。
在Winiso里,新建一张光盘,双击这里,输入想要的卷标,回车确定即可。
写好之后,保存成iso文件。
2025年11月10日 11点11分 11
吧务
level 14
2.制作CDTracks=1的特殊光盘(修改CDLabel和CDAllTime)
特殊光盘对于CDTracks和CDAllTime都有明确的要求,所以这次不能做空光盘了。
CDLabel的改法在上小节已经讲过,但是在这里遇到了一个特殊情况,就是特殊光盘几乎都是空卷标,所以再说一下,怎么做空卷标。在Winiso里,如果直接把原有的卷标全删掉,然后按回车,就会发现卷标没有修改成功。我们可以在卷标位置只输入一个空格,然后按回车,就会发现,光盘变成了无卷标。原因就是Winiso会自动删掉卷标结尾的空格。
CDAllTime音乐总时长又是个什么东西呢?
即使你往光盘里只放入MP3文件,也很难看出这个参数和MP3的实际时长有什么直接关联。实际上,这个所谓的“总时长”只是衡量光盘已用空间大小的,无论光盘里放的是音乐文件还是其他什么文件。
所以我们要知道怎么样换算音乐总时长和光盘已用空间。
例如0号特殊光盘,CDAllTime=17916034,我们首先把末两位和前面的数位分隔开,变成179160:34,前面是时间(不知道具体以什么为单位),一定是60的倍数,后面是零头帧数,取值范围是0~74。你也可以看看其他光盘的CDAllTime,都是满足这个规律的。
前后两部分数字的进位关系是逢75进60,也就是60单位时间=75帧。
例如某个光盘一共有752帧,752÷75=10……2,也就是有10组75帧,外加2帧的零头,然后这10组75帧进位成10组60单位时间,即600单位时间,于是这张光盘CDAllTime=60002
反过来计算,这个CDAllTime=17916034的光盘,换算成帧数就是179160÷60×75+34=223984帧。
然后帧数与光盘已用空间的关系是:(帧数+1)×2048=已用空间字节数。也就是说,毎帧是2KB(即2048字节),多加个1是因为程序猿都是从0开始数数的。
那么CDAllTime=17916034的光盘需要做成已用空间(223984+1)×2048=458721280字节。
所以为了达到想要的总时长,当然是往光盘里塞文件了,怎么放可以让它的字节数恰好达到我们想要的数呢?
首先要知道,光盘存储自身的格式信息固定要使用77824字节(77824=38×2048,这就是空盘的总时长是37的原因),剩下的就靠其中的文件。
在winiso界面最下方可以看到文件占用的空间,这个数字再加上77824就是总的光盘已用空间。
这里有一个文件大小,还有一个占用空间大小,计算时以后者为准,后者≥前者。因为占用空间一定是2048的倍数,如果实际的文件大小不是2048的倍数,那么文件占用的空间会略大于实际大小,向上凑整成为2048的倍数。
图中看到文件大小和占用空间恰好相等,那是因为我在做这些文件的时候就把他们的大小做得很整。
我使用的都是文本文档,它的大小是最好精确控制的。考虑到单个文件如果做的太大,打开就比较卡,所以我是做成每个文件16M,最后用一个文件来补齐零头。
文档内容全都是用UE填充的ASCII码00,这样做的好处是方便压缩。虽然36张特殊光盘平均都是几百M,加起来16个G,但是做成压缩包之后,连1个M都不到,神奇吧!
2025年11月10日 11点11分 12
吧务
level 14
3.制作CDTracks>1的特殊光盘(修改CDLabel、CDTracks和CDAllTime)
CDTracks,音轨数,这个参数很特殊。
是不是往光盘里放几个音乐文件,音轨数就是几呢?并不是,放入再多的音乐文件,最后发现音轨数还是1。相反,即使是一张空光盘,也有办法把它拆分成几十条音轨。
iso光盘不具备分轨能力,音轨数只能是1。要分轨,首先要把光盘做成cue+bin格式。
格式转换之前,要先把CDLabel和CDAllTime做好,一旦转换格式,这两个参数就不方便再改了。
Winiso也提供了格式转换功能,操作如图所示。
这样虚拟光盘变成了cue和bin两个文件,其中bin是光盘内容,cue是分轨信息。可以用记事本打开cue文件,看到里面是这样写的:
FILE "0星星.BIN" BINARY
TRACK 01 MODE1/2048
INDEX 01 00:00:00
这就是单条轨道的信息,要做多条轨道,就在后面继续写:
FILE "0星星.BIN" BINARY
TRACK 01 MODE1/2048
INDEX 01 00:00:00
TRACK 02 MODE1/2048
INDEX 01 00:00:01
TRACK 03 MODE1/2048
INDEX 01 00:00:02
……
要几条轨道就写几条。
cue文件的一些写法规则:
1.TRACK之后的数字要按01、02、03……的连续顺序往下排,要做几条音轨就排到几.
2.每个标签的时间必须要晚于前一个标签的时间。
3.如果要认真做一张音乐CD的话,cue文件里其实还应该加入很多其他信息,但是这里我们只是做个召唤盘,所以不管那些。
到这里,光盘制作教程就全部结束了。
2025年11月10日 11点11分 13
吧务
level 14
五、后记
十几年前,我就对《幻翼传说》的光盘召唤术非常着迷,换着不同光盘,想要召唤出好魔兽,却始终不能成功。后来因为做曹操传MOD,学习基础的反汇编知识,也数次尝试对《幻翼传说》使用,都没有取得什么成果。直至今年,感觉自己调试经验又积累了很多,再次挑战一下,结果成功了。
这个解析结果很让我吃惊,能召唤出来的东西有点过于离谱。如果说召唤小凯、梦魔、恶魔猫甚至普普鲁都可以接受,那么召唤朵拉才是真正的离大谱了。
感觉上光盘召唤术可以算作禁术了,破坏平衡的程度还在卡树妖BUG抓BOSS之上。毕竟魔兽最好从1级开始喂养,升级之后再喂养效果就打折扣了。抓来的梦魔是48级,哪里比得上直接召唤出来的1级梦魔呢?
不过也不是什么都能召唤的,至少四圣兽是召唤不出来的。
当年FY做这个光盘召唤术估计也只是当做彩蛋,毕竟那个年代你能有几张光盘可用?而且普通光盘也召唤不出什么好东西,至于那些特殊光盘,怎么可能刚好参数全对上呢?
这36张特殊光盘,其中0号是《幻翼传说》游戏自身的音乐盘,召唤出来的星星很可爱,并不破坏平衡(稍微存疑,我手里有原本音乐盘的虚拟光盘,少了一条音轨,时长也短了,所以召唤不出来星星,只能召唤炙雀,不知道是不是版本差异)。而后面的35张本来是不该存在的,只是预留了35个位置,没有正式使用。内部测试时大家找来了身边的一些光盘,把这些光盘信息录入进去,测试结束后,把光盘卷标删除,但是其它数据还留在了里面。
程序猿想的是:玩家去哪里找没有卷标的光盘,而且还能把音轨数和总时长也刚好对上呢?
但是他们怎么会想到,未来几年内,虚拟光盘技术发展,让我们可以想做什么参数的光盘就都能做出来什么参数的光盘呢?
终究也算是了却我一桩心愿,时间有些晚,不知道现在还有多少人玩这个游戏了。(至少黯姐姐会玩的)
2025年11月10日 12点11分 14
吧务
level 14
对了,既然能召唤普普鲁,那么就可以回答一下剧情中的这个问题:
2025年11月10日 12点11分 15
挺值钱的【】
2025年11月11日 06点11分
1 2 尾页