本帖最后由 motoedy 于 2017-9-12 07:58 编辑
=================================================
声明:这个模拟器不是我的原创,是我的一个朋友(网名:feisheng168)搞的,
已征得朋友的同意开源发出,以下的大部分(99%)内容为我朋友即此移植者编写,
如果对你有用,还希望你们向这些愿意开源的朋友给予肯定!
如果有需要以此为商业获利的(比如开发板),还请能申明感谢下移植修改者:feisheng168。
毕竟这个移植修改到STM32上花了feisheng168一个月的时间,谢谢!
=================================================
================我是可爱的前戏分割线的开始================
强大STM单片机,经过不断的努力终于在ST单片运行了NEC的游戏机模拟器,不要急先来几张PCE游戏的靓照、
哈哈,废话有点多直接来看STM32板子演示效果
在自己DIY的F7游戏机上运行的效果。
优酷演示视频
说了这么多废话,该上源码了。。
stm32f767IG演示代码如下:
MDK_PCE.rar
(7.11 MB, 下载次数: 1010)
2017-9-11 15:38 上传
点击文件名下载附件
测试游戏ROM:
测试游戏.rar
(3.79 MB, 下载次数: 2337)
2017-9-11 15:38 上传
点击文件名下载附件
=================================================
源代码移植过程如下:
首先我们打开工程所有的移植都会在“dos.c”文件完成,无需其它文件修改便可顺利完成
移植步骤
游戏模拟器我们要移植的东西有图像,声音,和手柄,以及ROM读取,内存管理。
第一步骤:我们移植图像
void line_blur(char *src, int line_width, int line);
这个函数添加我们的绘制行LCD显示,src为缓存,width行的宽度,line第几行;
第二步骤:我们移植手柄
void update_input(void);
#define INPUT_B2 (0x80)//B2
#define INPUT_B1 (0x40)//B1
#define INPUT_RUN (0x20) //START
#define INPUT_SELECT (0x10) //SELECT
#define INPUT_LEFT (0x08) //左
#define INPUT_RIGHT (0x04) //右
#define INPUT_DOWN (0x02) //下
#define INPUT_UP (0x01) //上
这个函数添加我们的手柄按键值,input.pad[0]将上面的值赋值给这个变量即可;
第三步骤:我们移植ROM读取
unsigned int fileio_rom(char *file,unsigned char*buf);
这个函数添加我们的FATFS,p为TF卡文件地址名,buf要读取的缓存区,返回读取字节数
第四步骤:我们移植声音
void play_wav(short *src, int size);
这个函数添加我们的声音处理DMA,buf为音频缓存地址,每帧播放16位WAV字节;
第五步骤:移植内存管理
将函数的大的内存进行分外部SDRAM
函数如下:
void *pce_malloc(int size);
申请内存函数,
void pce_free(void *p);
释放内存函数。
第六步骤:如何调用PCE游戏主函数
int pce_main (char *f)
在要调用的地方直接调用上面的函数加头文件#include "dos.h"
例如:pce_main ("0:pce/雷电.pce")
大工告成~—~ ~—~ ~—~ ~—~
请小伙伴移植玩玩STM32的强大功能
=====================================================================
一周热门 更多>