[原创] CPS1模拟器开发日志
CPS1 Debugger W. I. P
谨以此纪念两款我最喜欢的街机游戏之一:街头霸王 2 (Street Fighter II) - by Neoragex2002
CPS1是Capcom Play System 1基板的简称,其中的著名的游戏有街霸2代、三国志2代、名将、快打旋风等超人气大作。各位一定对Callus有很深刻的印象吧8 )Callus便是世界上第一个CPS1基板的模拟器.以后我将陆续贴出我编的CPS1模拟器WIP.如果你对模拟编程感兴趣, 请密切关注我的开发步骤8 ) 这也许是世界上唯一一个详细列举出开发步骤的Wip文档了,我几乎敢这样说8 )
2002.6.20
帧间插混合(Interframe Blending)滤波效果引入,哈哈!^^ 效果见最后贴图。
帧间插混合效果,和winkawaks里面的效果是一样的8 )
2002.6.19
最近休息中....不过很偶然的想通了AlphaBlending,等着看半透明效果吧,哈哈!
2002.6.17
代码大整理。场景浏览器、瓦砾块浏览器强化;添加了层次继承的驱动结构,支持动态载入Roms;即时存档功能也随之修正,支持多个游戏的多个存档;fix了场景浏览器中因活动层lagged一帧而导致的"下一帧"显示错乱问题;支持BgHi+Rowscroll混合解码效果;等等等,还有一系列不记得了的小bugs.公开测试版放出(v0.4).
2002.6.15
休息了两天,终于凭借着乍现的灵感和过度睡眠产生的先知先觉(连续停电中...^^!)纠正了行滚解码中最后的错误,行滚效果终于PERFECT!!图像解码工程趋于100%完成,仅仅需要代码整理而已了!
行滚效果!!
2002.6.12
唉....阿根廷出局,害得偶整了一天行滚都没整出来,之难,之难.....
2002.6.11
驱动分离完毕, 能够很方便地添入其他roms的驱动了,暂时仅支持街霸二代、名将、Final fight,效果图见最后贴图,以后将逐步添加其他驱动.终于走到最后一道难关了! Final Target:Rowscroll(行滚卷轴效果),图像解码进度最后10%就是留给它的.
街霸(暂时缺RowScroll效果)
2002.6.10
zlib支持添入,直接支持读取zip格式的roms了!
2002.6.10
这几天没干这个,休息休息,也许是因为觉得模拟单个finalfight完成度已差不多了的缘故吧8 ) 今天闲着无聊,整理了一下驱动部分,将finalfight换成了名将(实在是不想再钻finalfight了),准备将驱动相关的部分归纳一下,以便于多换几个roms试试8 ) 另,M68k核心部分改进了内存映射存取方式,采用16字长方式,这对16位M68kCPU来说效率应该是最高的了吧.
名将(完美模拟)
2002.6.7
修正了16×16层、32×32层在某些情况下的花屏,修正了读取活动块层数据结构的一个bug,改进了色板中关于亮度分量计算算法,现在的色彩渐变效果应该正常了.
2002.6.5
CPS1系统特殊图层叠加效果BgHi实现!呵呵,很有趣的图像效果.引入自动跳帧及自动延迟控制等帧频稳定措施.
BgHi效果对比图
2002.6.4
修正若干瓦砾块解码错误;纠正了一个致命的寻址错误;场景浏览器引入完整的控制I/O,终于可以打FinalFight了^^ 将编译器换成了VC++.net,我发觉编译质量、效率都比VC++6好得多8 )
2002.6.3
场景浏览器实现可选图层显示功能.核心调试器新添加载入/保存运行时context及内存两项功能,便于进一步调试.
2002.6.3
欧,说错了一个字,不是"完美",应该是'完整"8 ) 活动精灵层实现,图像解码如期完成,四层合成均搞定了~8 D 呵呵~ 效果见最后的贴图. 嗯...再进一步整理以后便可以开始DirectX了.当然,如果不在乎速度的话,其实GDI编的模拟器也是可以打di....哈哈8 D
四层合成效果8 )
2002.6.3
Ooops! 瓦砾块翻转问题解决了!8 ) 进度比我预料的还要快~8 D贴图见后. ok,next target,一个伟大的里程碑,活动精灵层的实现!!为了完美的图像解码,冲啊~!
瓦砾块完美翻转!
2002.6.2
痛苦的16×16卷轴层暂时搞定了,并且层次合成基本上完美地解决.下一个目标,瓦砾块翻转问题和活动层!!很快,完整的画面就要出现了!!哈哈!!
8×8、16×16、32×32三层合成效果
2002.5.31
fix here,fix there,fix anywhere.8 ) 瓦砾块浏览器进一步完善,支持8×8、16×16、32×32三种瓦砾的显示,图像解码取得突破性进展,现在的图像解码方式可能是最快的了, 支持自动裁剪和翻转.而且是GDI、DirectX通用的.场景浏览器进一步完善,支持持续运行、单帧运行及跳帧.而且,嘿嘿,32×32卷轴层搞定了,图像解码已经完成一半了!
8×8层与32×32层合成效果
2002.5.29
Gooooooal!低速绘制图像成功!! 超级阶段性成果! 哈哈~8 D 没什么好多说的,看最后的贴图吧. 8×8卷轴层完成, 终于可以看见活动图像了,呵呵8 ) 久等了久等了
2002.5.28
在调试器环境下动态色盘获取成功!哈哈! 这至少证明一件事情: 虽然现在没有图象和声音,但是整个CPS1系统已经有效的运作起来了,而且是在正确的运行一个游戏!8 ) ok, 这下可以真真正正地开始尝试低速绘制图像了.
2002.5.27
两部分整合,全部用C++改写,因为现在需要的是一个方便的系统调试器来进一步测试(?)CPS1图像系统及I/O系统的细节,目前暂不需要速度(那是第二次(!)以DirectX重写的事情了).改进了核心调试器的某些重要但效率低下的跟踪方式,下一个(小)目标:在调试环境下获取动态色盘及绘制静止游戏图像.不着急不着急8 )
2002.5.24
进一步修正瓦砾块浏览器的显示及色盘,贴图见后. 下面,嘿嘿,该把核心调试器和瓦砾块浏览器拼合起来了,第一次大规模重写,呵呵
再次修正的瓦砾浏览器
2002.5.23
yeah!瓦砾块浏览器色盘终于修正,之繁琐,之复杂,之痛苦,zzzzzzzzzzz 贴图见后.
色盘终于修正!
2002.5.22
Gfx CPU核心调试器进一步完善, 支持断点、无限制运行、中断及帮助 8 ) Gfx解码进展顺利,不过比我想象的复杂,贴图浏览器基本完成,但是色板信息暂没有修正,贴图见后.
瓦砾块浏览器原型
2002.5.20
垂直扫描中断实现!能够看见读写显存了!!哈哈哈哈!阶段性成果!下一步,图象解码,下一个阶段性的目标可能就是....准备看到一个比较慢的显示画面了,具体用GDI还是用DirectX我还没决定,看情况吧8 )
2002.5.20
CPS1基板内存映射基本完成,终于可以跟踪了, 下一步就看vBlank中断能不能如期实现了.
2002.5.20
M68k内存映射进一步详细化,I/O子系统模拟添入, 核心调试器进一步完善,垂直扫描中断实现呼之欲出,哈哈!
kawaks的核心调试器
我做的调试器,比较一下结果? 8 )
2002.5.19
Motorola 68000 CPU 核心调试器基本完成.
各部分完成度如下:
-Gfx CPU 99%
-Sfx CPU 0%
-I/O Subsystem 95%
-Gfx Decoding 99% (has graphics)
-Sfx Decoding 0% (no sound)
Copyright © 2005 - Matrix of Paradox, All Rights Reserved.
已授权《模拟地带》2007年总第29期发表.