主题 : 【讨论】SS恶魔城月下文件研究分析(20.20.05.04)
YZB
广告位招租
级别: 论坛版主

UID: 12451
精华: 6
发帖: 17870
威望: 170 星
金钱: 69173 浮游币
贡献值: 7935 点
好评度: 50415 点
人气: 4245 点
在线时间: 13262(时)
注册时间: 2004-10-02
最后登录: 2020-06-02
楼主  发表于: 2020-04-18 11:58

【讨论】SS恶魔城月下文件研究分析(20.20.05.04)

*关于特殊名字

1  X-X!V''Q    

2 AXEARMOR 初期拥有一个斧头盔甲

3 GTI-CLUB  初期拥有250000金币

其中2和3需要通关一次才有效,并且2和3不能叠加


*关于新游戏限定时间内打倒伯爵的奖励

限定时间是指从站在楼梯下可以操作开始计时,其中后面的对话剧情也算时间的

100秒以内打倒伯爵  所有基础数值都+5

200秒以内打倒伯爵    LCK+2

300秒以内打倒伯爵    LCK+1

999秒以内打倒伯爵    CON+1

未完待续.............





2020.05.04更新2组对比视频


原版
https://www.bilibili.com/video/BV17K411W7m4/


优化版
https://www.bilibili.com/video/BV1yZ4y1s7yj/






原版
https://www.bilibili.com/video/BV1Gk4y1k7mE/


优化版
https://www.bilibili.com/video/BV18f4y1m7C4/







2020.04.19
更新一下,关于这个标题的读取方式,虽然我不是专业的程序员,但是我觉得以下这种方式挺傻的,
在进入标题画面,我们已经知道需要读取标题相关的4个文件,如果我们进入音乐模式,在退出音乐模式以后,前面的4个文件还要重新读一次.......
然后还有,在标题画面按A进去以后,如果你想退回到标题画面的话,这4个文件还是要重新读一次

还有一个地方,关于这3个角色的状态,
如果角色在非静止状态,程序会不停的把角色的状态图形数据写入到内存,然后再经过计算以后传送到显存,这也没什么,但是这些数据是压缩的,要先解压,解压以后才计算,这些是实时的,虽然我知道汇编跑得很快,但是架不住量多啊,这3个角色,少的也有100多个姿态,随便走一下也有好几个需要不停的解压计算,如果在大场景的情况下,肯定会拖慢。
所以a少身后漂亮的残影要付出代价的。








最近在研究ss的恶魔城读盘为什么这么慢,发个帖子记录一下,当作备忘录吧

在这之前,先说明一下ss的内存,ss的运行内存是2M,对,你没看错,是2M,好像比ps的多0.5M,ps是1.5M来着??

然后先研究一下这个游戏的文件结构吧

虚拟光驱载入镜像,以下是这个游戏ss的文件结构初步分析,有说错的地方请指正

第1个文件夹OMKAE,分别有8bit色和24bit色的游戏相关的壁纸,以及一个DOC的文档,里面应该是记录了此游戏工作人员的吐槽吧

第2个文件夹SD,里面是音频 音效相关的文件,带声音的文件都在这个文件夹里面了

接下来到游戏根目录

3个txt文件,这个是自带的,貌似每个游戏都有


下面开始是重点

0.bin  游戏的主程序之一



以下3个是A少的文件,CHR为图片,PRG为程序
ALUCARD.PRG
ALUCARD.CHR
ALC_W.CHR



以下3个是拿鞭子角色的文件1,CHR为图片,PRG为程序
RICHTER.PRG
RICHTER.CHR
RIC_W.CHR


以下3个是拿鞭子角色的文件2,这个游戏中应该没用到?也许有特殊的选择方法?
把内存地址605CEAC改成1,605C6D0改成1,就可以用下面这些文件了,貌似就是衣服不一样?
RICHTER2.PRG
RICHTER2.CHR
RIC_W2.CHR




以下3个是玛丽亚的文件,CHR为图片,PRG为程序
MARIA.PRG
MARIA.CHR
MAR_W.CHR


以下4个文件都是标题画面用到的文件,CHR为图片数据,PRG为程序,MAP为打包的压缩图片(包括后面的关卡和boss  那些索引都在相应的prg程序里,丧心病狂),fon为字库
ASCII.FON
TITLE.CHR
TITLE.MAP
TITLE.PRG


接下来BOSS开头的文件
看文件名就知道是和boss相关,CHR为图片数据,PRG为程序,MAP为打包的压缩图片
BOSS_02.PRG
BOSS_02.CHR
BOSS_02.MAP
......................
.......................
......................
BOSS_R14.PRG
BOSS_R14.CHR
BOSS_R14.MAP


在然后是几个AVI文件,电脑上都可以播放,就不说了
BREAK.AVI
KONAMI.AVI
OPENING.AVI
ENDING.AVI


接下来是通关以后的程序和图片
ENDING.CHR
ENDING.PRG


接下来
下面这些都是剧情图片,角色台词,遇到带剧情的关卡都会加载,其实s40开头的为通关剧情
EVENT020.001  
S011.CHR  
S011.PTN  
...................
...................
...................
SR14.CHR
SR14.PTN
SWATA.CHR
SWATA.PTN


继续
GAME.PRG   游戏主程序之一

GAMEOVER.MAP  GAMEOVER结束图片



LOAD.MAP  正城存档房间数据
RLOAD.MAP 逆城存档房间数据



LOGO.PRG  开头显示logo的程序
KCEN.MAP  开头显示的2张图片

MOVIE.PRG   播放AVI的程序

以下3个为新游戏打完伯爵以后调用的剧情说明文件,CHR为图片数据,PRG为程序,MAP为打包的压缩图片
OPEN.PRG
OPENNING.CHR
OPENNING.MAP


以下这3个为按开始键以后需要读取到的文件
SUB.PRG       菜单主程序
SUB_DISP.MAP  菜单图片数据以及地址数据
KANJI.FON     道具说明字库


以下这4个为图书馆老爷爷房间文件,CHR为图片数据,PRG为程序,MAP为打包的压缩图片
LIBRARY.PRG
LIBRARY.CHR
LIBRARY.MAP
OYAJI.CHR   图书馆字库


RSTAG以及STAG开头的为关卡相关文件,CHR为图片数据,PRG为程序,MAP为打包的压缩图片
这个有很多,就不一一列出了,带R的是逆城

逆城
RSTAGE01.PRG
RSTAGE01.CHR
RSTAGE01.MAP
...................
...................
...................
...................
正城
STAGE01.PRG
STAGE01.CHR
STAGE01.MAP


然后,下面这2个应该是通关以后出现的字幕数据,PRG为程序
STAFF.PRG
STAFROLL.MAP


接下来来是T_开头的文件名为使魔数据,共7个,CHR为图片数据,PRG为程序

T_BAT.CHR
T_BAT.PRG
...............
..................
T_SWORD.CHR
T_SWORD.PRG


接下来
WEAPON0.PRG   装备左手的程序
WEAPON0.CHR   装备左手的图片

WEAPON1.PRG   装备右手的程序
WEAPON1.CHR   装备右手手的图片



ITEM.CHR   查了一下程序,这个文件应该没用上



正城传送点WARP.PRGWARP.CHRWARP.MAP

逆城传送点RWARP.PRGRWARP.CHRRWARP.MAP


文件分析说完了,但是还有地方要补充一点,关于那个WEAPON装备文件的

WEAPON0.PRG   左手的道具程序
WEAPON0.CHR   左手的道具图片

WEAPON1.PRG   右手的道具程序
WEAPON1.CHR   右手的道具图片

不知道ps是不是这样,ss的这些文件是分开存放的
其中有64个左手的程序和64个左手的道具图片,以及64个右手的程序和64个右手的道具图片
其中左右手的道具图片是一样的
然后程序是按每0x3000块打包在一起的,图片是按0x4000打包在一起,读取的时候按装备来定位读取



//////////////////////////////////////////////////////////////////////////
文件分析完毕,下面简单来说一下原游戏的读取方式
开头读取都是固定的这几个文件(声音相关的文件暂时忽略)
MOVIE.PRG
GAME.PRG
LOGO.PRG
KCEN.MAP
TITLE.PRG
TITLE.CHR
ASCII.FON
TITLE.MAP

接着就可以看见标题画面了

然后开始新游戏和读取存档都是差不多的套路

判断角色ID,读取相应的文件,然后读关卡数据,剧情图片(如果有的话)


略有差别的是读取存档会接着读取下面这些文件如果有的话,没有就跳过
左手装备
右手装备
使魔

读完上面这些文件就可以出现游戏画面了
/////////////////////////////////////////////////////////////////


然后重点说一下这个按开始键出现菜单以及关闭菜单的流程吧

按一下开始键,然后准备调出菜单,程序会读取以下文件(注意,每次进菜单都会读取)!
SUB.PRG       菜单主程序
SUB_DISP.MAP  菜单图片数据以及地图数据
KANJI.FON     道具说明字库

每次进菜单都会读取是不是感觉特别傻???


更傻的是后面

当你关闭菜单的时候,程序会读取以下文件(注意,每次关闭菜单都会读取)
你的左手装备  2个文件   如果是空手就不读取
你的右手装备  2个文件   如果是空手就不读取

使魔      2个文件      如果没有就不读取,如果和上次一样也不读取(看起来这里做了一点优化)


当前关卡的map文件  必读


如果关卡有剧情,还要读剧情文件

我们来算一下最少需要读取几个文件

左手装备   +0   空手
右手装备   +0   空手
使魔         +0  没有
关卡文件   +1  1
剧情文件   +0  没有
----------------------
                       =1

我们退出菜单最少的一次只需要读取1个文件,算上我们进入菜单的3个,按一次开始键在退出总共需要读取4个文件


看起来还不错吧,我们来算一下最多的一次需要读取几个文件

左手装备   +2
右手装备   +2
使魔         +2
关卡文件   +1
剧情文件   +2
----------------------
                =9

就是说最多一次我们退出菜单需要读取9个文件,算上我们进入菜单的3个,按一次开始键在退出总共需要读取12个文件!

天啦,这还敢按吗,难怪每次都要黑屏很久,这还不算上每次读取关卡map文件以后还需要的等待的解压时间

最后可以下结论了,为什么读取这么慢,都怪ss内存太小了,才2M,每次都要读取读取读取........

什么,你说ps是秒读?那只能说是程序员的锅了,游戏构架不合理,构架的话应该算策划师的锅吗?
[ 此帖被YZB在2020-05-21 09:24重新编辑 ]
本帖最近评分记录:
  • 好评度:+10(saturnboy) 版主好厉害,
  • 好评度:+1(gtstmars) 辛苦了,送你 1 点人气
  • 好评度:+1(willzyj) 辛苦了,送你 1 点人气
  • 级别: 模拟小生
    UID: 106311
    精华: 0
    发帖: 5
    威望: 0 星
    金钱: 2353 浮游币
    贡献值: 1 点
    好评度: 15 点
    人气: 0 点
    在线时间: 9(时)
    注册时间: 2006-02-11
    最后登录: 2020-05-27
    沙发  发表于: 2020-04-22 11:19

    不错,浅显易懂,虽然我还是看不大懂
    级别: 模拟小生
    UID: 321000
    精华: 0
    发帖: 49
    威望: 0 星
    金钱: 16 浮游币
    贡献值: 0 点
    好评度: 147 点
    人气: 0 点
    在线时间: 42(时)
    注册时间: 2015-10-15
    最后登录: 2020-05-25
    板凳  发表于: 2020-04-22 23:37

    用模拟器可以忽略这个问题
    YZB
    广告位招租
    级别: 论坛版主

    UID: 12451
    精华: 6
    发帖: 17870
    威望: 170 星
    金钱: 69173 浮游币
    贡献值: 7935 点
    好评度: 50415 点
    人气: 4245 点
    在线时间: 13262(时)
    注册时间: 2004-10-02
    最后登录: 2020-06-02
    地板  发表于: 2020-04-24 20:06

    回 2楼(snkplayyy) 的帖子

    模拟器上一样,你可以试试游戏画面按开始键到菜单,然后退出菜单要多久时间
    级别: 模拟专家
    UID: 49661
    精华: 0
    发帖: 203
    威望: 0 星
    金钱: 2996 浮游币
    贡献值: 0 点
    好评度: 560 点
    人气: 0 点
    在线时间: 147(时)
    注册时间: 2005-07-29
    最后登录: 2020-05-31
    草席  发表于: 2020-04-28 17:44

    想要优化的话,就要修改原程序,动用RAM卡之类的外部空间了
    YZB
    广告位招租
    级别: 论坛版主

    UID: 12451
    精华: 6
    发帖: 17870
    威望: 170 星
    金钱: 69173 浮游币
    贡献值: 7935 点
    好评度: 50415 点
    人气: 4245 点
    在线时间: 13262(时)
    注册时间: 2004-10-02
    最后登录: 2020-06-02
    5楼  发表于: 2020-05-02 19:26

    优化版内测中................
    YZB
    广告位招租
    级别: 论坛版主

    UID: 12451
    精华: 6
    发帖: 17870
    威望: 170 星
    金钱: 69173 浮游币
    贡献值: 7935 点
    好评度: 50415 点
    人气: 4245 点
    在线时间: 13262(时)
    注册时间: 2004-10-02
    最后登录: 2020-06-02
    6楼  发表于: 2020-05-04 15:00

    级别: 模拟小生
    UID: 120417
    精华: 0
    发帖: 4
    威望: 0 星
    金钱: 2542 浮游币
    贡献值: 0 点
    好评度: 12 点
    人气: 0 点
    在线时间: 1(时)
    注册时间: 2006-04-11
    最后登录: 2020-06-02
    7楼  发表于: 2020-05-04 15:35

    是要流畅好多~!
    级别: 模拟专家
    UID: 49661
    精华: 0
    发帖: 203
    威望: 0 星
    金钱: 2996 浮游币
    贡献值: 0 点
    好评度: 560 点
    人气: 0 点
    在线时间: 147(时)
    注册时间: 2005-07-29
    最后登录: 2020-05-31
    8楼  发表于: 2020-05-04 23:19

    实验成功了??SS沉冤得雪,替KONAMI背锅多年了
    级别: 模拟菜鸟
    UID: 321590
    精华: 0
    发帖: 10
    威望: 0 星
    金钱: 30 浮游币
    贡献值: 0 点
    好评度: 30 点
    人气: 0 点
    在线时间: 7(时)
    注册时间: 2020-05-18
    最后登录: 2020-06-02
    9楼  发表于: 2020-05-18 21:10

    回 楼主(YZB) 的帖子

    ss恶魔城 月下,移植问题,确实也是程序员的问题,ss有两个处理器,如果程序员的有诚意,可以弄成一个处理器处理游戏的活动图层,另一个处理器处理游戏背景图层和特效。可惜的是,ss的机能本来就不怎么样,k社移植月下的程序员,他弄成一个处理器处理活动图层和特效,另一个处理器处理背景图层,加重了第一个处理器的负担。