
(已阅读
次) |
注意:出于某些原因,不再提供相关下载!
经过一段时间(似乎有点久了),一段在MOTO E680/E680i/A780上的演示动画终于完成了(下载)。理论上,只要是320*240,并且支持MIDP2.0的机器都可以观看。 当然,由于机器不同,运行速度可能不一样,至少,在我的MOTO E680i上的表示比较令人满意(PC上的模拟器没真机快)。
如果你具备以下条件,也可以加入到PaleMe开发中来:
- 喜欢仙剑,至少,我爱这个游戏有8年之久
- 你可以没有很多的时间(我也不在乎是一年还是二年完成开发),但你至少有开发基础
- 可以没有真机测试(这部分工作我可以代劳)
- 在PalMe的开发中能够给大家提供帮助,而不是一味的询问问题。
- 所有参与开发的朋友都会获得完整的源程序和资源。
- 你不会因为参与开发而获得任何费用,并且也不可将源程序和资源文件商业化
由于仙剑JAVA实现的工作是基于http://free.ys168.com/?palxex(藏宝阁)的工作进行的,因此,并不能保证此处的信息总是及时更新(因此翻译也需要时间),为了你能获得最新或者更为准确的信息,请访问上述网站。
下表描述了仙剑(DOS版本)各文件的功能及其结构,然而下表不能完全让你明白文件的结构,因此,在阅读下表的同时,建议查看以下说明:MKF文件结构、RLE图像、DEYJ1压缩、子包结构(Subspace)
仍有问题,请点此处! |
|
|
|
|
文件结构 |
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)
资源浏览器第一版本在此下载(源程序也在打包中) |