RCSN 发表于 2022-7-23 15:22

[HPM-DIY]伪3D游戏doom移植到hpm6750

<p><span style="font-size:20px;"><span style="font-family:宋体;">&nbsp;《毁灭战士4》(《DOOM》)是id Software制作、<a href="https://baike.baidu.com/item/Bethesda/1435551">Bethesda</a>公司发行的一款第一人称射击类游戏,在PS4、XBOXONE、PC、Nintendo Switch上发售。2016年12月2日,该作品获得TGA 2016最佳配乐、声效、最佳动作游戏奖。</span></span></p>

<p><span style="font-size:20px;"><span style="font-family:宋体;">&nbsp; doom已经发展到了第四集doom4,目前有doom1 doom2 doom3 doom4。doom是一款伪3D游戏,对于MCU的性能和资源要求也是挺高,需要的RAM根据分辨率也得几M+。刚好hpm6750很满足需求,于是楼主就想着移植体验下。</span></span></p>

<p><span style="font-size:20px;"><span style="font-family:宋体;">&nbsp; 目前已经移植了本体游戏,移植版本为V1.9,支持doom1,doom2,doom。加入触摸交互,可玩性很大。音频方面尚未适配,后续闲时可进行移植通过DAO播放。</span></span></p>

<p><span style="font-size:20px;"><span style="font-family:宋体;">&nbsp;视频效果如下:</span></span></p>

<p><span style="font-size:20px;"><span style="font-family:宋体;">&nbsp;</span></span><iframe allowfullscreen="true" frameborder="0" height="450" src="//player.bilibili.com/player.html?bvid=1HV4y177Sg&amp;page=1" style="background:#eee;margin-bottom:10px;" width="700"></iframe></p>

<p><span style="font-size:20px;"><span style="font-family:宋体;">&nbsp; <span style="color:#e74c3c;">本文针对doom的移植进行下相关说明。</span></span></span></p>

<p><span style="color:#e74c3c;"><span style="font-size:20px;"><span style="font-family:宋体;">&nbsp; 由于SDK方面已经做好了fafts适配,包括了SD卡和USB host U盘,这就给doom游戏文件卡外加载提供很大的方便性。另外RGB屏幕和触摸gt911上,SDK也做好了相关移植工作,这就方便楼主进行移植,减少了移植的开发难度。</span></span></span></p>

<p><span style="color:#e74c3c;"><span style="font-size:20px;"><span style="font-family:宋体;">&nbsp; 总体而言,hpm6750作为游戏机相关开发是没什么压力的,刷屏帧率也可以在150fps+,加上触摸交互也没卡顿感受。</span></span></span></p>

<p><span style="font-size:20px;"><span style="font-family:宋体;">1、文件系统注册</span></span></p>

<p><span style="font-size:20px;"><span style="font-family:宋体;">&nbsp; 楼主使用的是SD卡,移植下官方的SDK下的fatfs例子,针对SD卡的例子,挪到本工程中,添加如下文件,并进行挂载以及设置根目录,这是比较重要的一点,否则doom无法进行加载文件导致失败。需要前提保证文件系统移植成功。</span></span></p>

<p>&nbsp;</p>

<p><span style="font-size:20px;"><span style="font-family:宋体;"></span></span></p>

<p><span style="font-size:20px;"><span style="font-family:宋体;">&nbsp; 接下来适配下doom的打开,关系,读写文件等操作到fatfs接口,在doom的源码文件m_misc.c中。如图若示:</span></span></p>

<p>&nbsp;</p>

<p><span style="font-size:20px;"><span style="font-family:宋体;"></span></span></p>

<p>&nbsp;</p>

<p><span style="font-size:20px;"><span style="font-family:宋体;">2、RGB屏幕移植对接适配</span></span></p>

<p><span style="font-size:20px;"><span style="font-family:宋体;">&nbsp;&nbsp;SDK中有对lcdc接口的例子,方便进行移植过来成接口,这里只需要一层图像刷新,做一下接口即可。一个初始化以及刷新接口。</span></span></p>

<p>&nbsp;</p>

<p><span style="font-size:20px;"><span style="font-family:宋体;"></span></span></p>

<p>&nbsp;</p>

<p><span style="font-size:20px;"><span style="font-family:宋体;">&nbsp; 然后需要在建立个文件引出显存地址,LCD的分辨率的宽度高度接口等。</span></span></p>

<p>&nbsp;</p>

<p><span style="font-size:20px;"><span style="font-family:宋体;"></span></span></p>

<p>&nbsp;</p>

<p><span style="font-size:20px;"><span style="font-family:宋体;">3、触摸交互对接适配。</span></span></p>

<p><span style="font-size:20px;"><span style="font-family:宋体;">&nbsp; SDK已经包含了gt911的驱动,只需要对接触摸相关接口,然后分配下屏幕的各个触摸区域分配。这里使用的分辨率为800*480,触摸交互区域只使用600*480。触摸区域分配如下:</span></span></p>

<p>&nbsp;</p>

<p><span style="font-size:20px;"><span style="font-family:宋体;"></span></span></p>

<p>&nbsp;</p>

<p><span style="font-size:20px;"><span style="font-family:宋体;">&nbsp; 有个table表可以根据自己情况进行调整区域。如下:</span></span></p>

<p>&nbsp;</p>

<p><span style="font-size:20px;"><span style="font-family:宋体;"></span></span></p>

<p>&nbsp;</p>

<p><span style="font-size:20px;"><span style="font-family:宋体;">4、内存分配</span></span></p>

<p><span style="font-size:20px;"><span style="font-family:宋体;">&nbsp; 由于doom需要相对比较大的内存,不但需要自身的malloc分配的内存,也需要给zoom分配相关的内存。以此用起来大概也得需要10M+的内存,刚好hpm6750evkmini板载了16M的SDRAM,也就极大的满足了内存需要。</span></span></p>

<p>&nbsp;</p>

<p><span style="font-size:20px;"><span style="font-family:宋体;"></span></span></p>

<p>&nbsp;</p>

<p><span style="font-size:20px;"><span style="font-family:宋体;"></span></span></p>

<p>&nbsp;</p>

<p><span style="font-size:20px;"><span style="font-family:宋体;">&nbsp;&nbsp;以此,doom移植工作整体完成,烧录下看下现象。不出意外的话大致都可以上手了。</span></span></p>

<p><span style="font-size:20px;"><span style="font-family:宋体;">&nbsp;&nbsp;可以进行动态加载游戏文件,不过目前楼主使用定死方式,改动文件修改以下即可:</span></span></p>

<p>&nbsp;</p>

<p></p>

<p>&nbsp;</p>

<p></p>

<p>&nbsp;</p>

<p></p>

<p>&nbsp;</p>

Jacktang 发表于 2022-7-23 21:40

<p>不愧是高手出手doom移植,图文并茂</p>
页: [1]
查看完整版本: [HPM-DIY]伪3D游戏doom移植到hpm6750