基于i.mx6q平台的NES模拟器移植

小时候一直希望自己能够制作一台游戏机,那时玩的游戏大多都是NES游戏和GBA游戏,那今天就在i.mx6q平台下移植一下NES模拟器吧,后续有时间再移植一下GBA模拟器。下面开始移植NES模拟器。

硬件环境:
我采用的是i.mx6q开发板,屏幕分辨率为800x480

系统环境:
linux 4.1.15
根文件系统用的是开发板自带的根文件系统,里面已经移植好了alsa相关的库文件
模拟器:
NES源码地址:(https://github.com/nejidev/arm-NES-linux)
游戏合集:(https://pan.baidu.com/s/16hIWwYQQEX9aOBDG1dVa0A) 提取码:asdf

移植过程中碰到的问题:

1.游戏集合里的超级玛丽没有声音,在调试时以为移植有问题,后来发现是游戏本身问题,魂斗罗声音正常,其他的没试验。

2.移植过程中刚开始移植后发现显示不正常,会花屏,于是编写了一段代码测试屏幕,最后发现虽然屏幕是800x480的,但是分配内存和使用时需要用832x480。

3.由于问题2所以在移植NES时,进入arm-NES-linux-master/linux路径下
打开InfoNES_System_Linux.cpp,做如下修改

  line_width   = (var.xres+32) * px_width;
//screen_width = var.yres * line_width; 
  screen_width =(var.xres+32) * var.yres * var.bits_per_pixel / 8; // 一屏多少byte
  lcd_width    = var.xres+32;

修改后保存。
修改makefile:
install:
install ./xx/xx (自己的安装路径)
之后make (一定要用交叉编译哦)
make install
将移植好的模拟器拷到开发板下,运行游戏就可以了