800*600 or above for best view


(已阅读 次)

注意:出于某些原因,不再提供相关下载!

经过一段时间(似乎有点久了),一段在MOTO E680/E680i/A780上的演示动画终于完成了(下载)。理论上,只要是320*240,并且支持MIDP2.0的机器都可以观看。 当然,由于机器不同,运行速度可能不一样,至少,在我的MOTO E680i上的表示比较令人满意(PC上的模拟器没真机快)。

如果你具备以下条件,也可以加入到PaleMe开发中来:

  1. 喜欢仙剑,至少,我爱这个游戏有8年之久
  2. 你可以没有很多的时间(我也不在乎是一年还是二年完成开发),但你至少有开发基础
  3. 可以没有真机测试(这部分工作我可以代劳)
  4. 在PalMe的开发中能够给大家提供帮助,而不是一味的询问问题。
  5. 所有参与开发的朋友都会获得完整的源程序和资源。
  6. 你不会因为参与开发而获得任何费用,并且也不可将源程序和资源文件商业化

由于仙剑JAVA实现的工作是基于http://free.ys168.com/?palxex(藏宝阁)的工作进行的,因此,并不能保证此处的信息总是及时更新(因此翻译也需要时间),为了你能获得最新或者更为准确的信息,请访问上述网站。

下表描述了仙剑(DOS版本)各文件的功能及其结构,然而下表不能完全让你明白文件的结构,因此,在阅读下表的同时,建议查看以下说明:MKF文件结构RLE图像DEYJ1压缩子包结构(Subspace)

仍有问题,请点此处!


文件名
功能(推测)

是否采用
YJ1压缩

子.空数
文件结构
JAVA实现
SETUP.DAT install设定
--
--
WOR16.FON 字体.图形
--
--
WOR16.ASC 字体.码表
--
--
M.MSG 全部对话/提示
--
--
WORD.DAT 所有文字
--
--
*.rpg 存档
--
--
MIDI.mkf FM档
88.2
经过MKF解开后,每个文件即是一个.MIDI文件 MIDI
TestMIDI
CenterFrame
MUS.mkf midi档
88.2
经过MKF解开后,每个文件即是一个.RIX文件,虽然有DOS版本的RIX播放器,但不知在JAVA中如何播放

VOC.mkf 音效档
275.65
经过MKF解开后,每个文件即是一个.VOC文件,但不知在JAVA中如何播放

GOP.mkf 图元集
226.3
GOP属于子包结构,其中有226个图元包,其内每个图元均为RLE,形状是菱形,而且其大小为32*15像素 GOP
MAP.mkf 地图档
226.3

MAP和GOP有着相同的子文件数,因此,MAP和GOP是一一对应的关系。MAP经过MKF解开后,其子文件采用DEYJ1方式压缩。经过DEYJ1解开后的文件都应该具有65536字节的大小,其具体格式如下:

每512字节描述一行,共有128行(512*128=65536字节)。其中第一行中,每4个字节描述一个图元。这4个字节中,头两个字节用来描述底层图片的索引,后两字节描述在该底层图片上覆盖图片的信息。其中图片在GOP中的索引的计算为:将高位字节的第5位移到低位字节的前面,形成一个9字节描述的索引,如下面的代码:

fel = readByte(); //低字节
felp = readByte(); //高字节
felp >>= 4;
felp &= 1; //取高字节的第5位的值
elem1 = ( felp << 8) | fel; //图元在GOP中的索引

对于覆盖层信息,索引的计算方式同上,只不过仅当索引大于0的时候才进行覆盖(因此并非所有地方都需要覆盖),并且覆盖的索引需要减去1才是覆盖层在GOP中的真正索引。

另外需要注意的是,在同一行中,第偶数张图片的上角会与前一张图片的右角进行拼接,因此其显示位置为前一张图片的(x+16, y+8)的地方,以下是示例:

第一行:(0, 0)(16, 8)(32, 0)(48, 8)(64, 0)......
第二行:(0, 16)(16, 24)(32, 16)(48, 24)(64, 16)......

GOP
MAP
TestMap
RNG.mkf 过场动画
12.0

RNG文件经过MKF解开后,每个子文件仍然是一个经过MKF压缩的文件,然后再次经过MKF解开后,其子文件是一个YJ1压缩的文件(够复杂吧,大量的解压缩需要高的CPU资源,仙剑在386时代就能很好的完成,呵呵,厉害)。

以第一次解开的MKF文件为例子,假如该文件为1.RNG,对该文件再次进行MKF解压后,会得到若干个小的文件(1_01,1_02,1_03……),这些小文件中(需要再次经过DEYJ1解压),第一个文件通过比较大,而其后的文件比较小,这是由于其第一个文件是描述动画的第一帧,而以后的文件只描述在第一帧上进行变化的数据。

在描述变化信息的文件中,由于不包含变化位置的坐标信息,因此也总是从动画位置的左上角(0,0)开始的,依次描述变化,直至无变化可描述以止则结束(因此如果当前帧和前一帧变化较大,则描述文件会比较大)。

已完成,
整理上传中
DATA.mkf 大量设定
15.0
 
SSS.mkf 脚本集
5.0
 
PAT.mkf 调色板
9.-2

PAT.mkf文件不同于其它.mkf文件,其文件的组织结构为从0x28开始,每768字节构成一个子文件,共有11个子文件,在这768字节中,其按照Red、Green、Blue颜色分量进行存储,共有256组颜色分量,正好构成游戏中所需要的256色的调色板。不过有一点需要注意的是,由于仙剑在开发的年代比较早,因此那是的颜色数量远没有现在的24位色这么多,当时是每一个字节的低6位表示颜色,高2位没有使用,所以我们在进行转换的过程中,必须将颜色分量须右移2位。如下:

color = [Red << 2] | [Green << 2] | [Blue << 2];

Palette
BALL.mkf 物品图片档
231.0
经过MKF解开后,每个子文件是标准的RLE图片

RLE
TestBall

RGM.mkf 人物头像档
91.2
经过MKF解开后,每个子文件是标准的RLE图片 RLE
TestRgm
FBP.mkf 背景图
72.0
经过MKF解开后,每个子文件必须经过DEYJ1解压,解开后的大小是64000字节,用来描述战斗时的背景(320*200),其数据是调色板的索引。 FBP
TestFBP
F.mkf 我战斗形象
19.0
同GOP有着同样的存储方式 F
TestF
FIRE.mkf 法术效果图
55.0
同GOP有着同样的存储方式 FIRE
TestFire
ABC.mkf 敌战斗形象
153.0
同GOP有着同样的存储方式 ABC
TestAbc
MGO.mkf 各种人物形象
637.1
同GOP有着同样的存储方式 MGO
TestMgo

关于如何执行这些代码

假设在c:\pal目录下执行该程序,则首先需要建立res文件夹,将仙剑中的所有.mkf文件copy到res文件夹下,然后将下载的文件放入c:\pal下相应的文件夹(对应于包名),如Palette.java就应该放在c:\pal\com\ismyway\pal\util\下,然后在c:\pal下执行javac com\ismyway\pal\test\*.java编译程序,最后执行java com.ismyway.pal.test.TestBall就可以了(TestBall)

资源浏览器第一版本在此下载(源程序也在打包中)