单片机/MCU论坛
直播中

jf_1137202360

8年用户 1359经验值
擅长:嵌入式技术
私信 关注
[文章]

【HD-G2UL-EVM开发板体验】掌上游戏机之三 —— NES游戏模拟器移植

前言
   前面我们完成了USB手柄按键采集,RTP实时推流H264PC端显示作为虚拟显示器。完成了移植NES游戏模拟器的基本要素,这一篇我们开始进行真正的移植。

过程


如下是移植好的代码
git clone https://github.com/qinyunti/LiteNES.git
移植需要实现hal.c中的接口
nes_key_state查询按键状态
nes_flush_buf写显示缓冲区
nes_flip_display真正将显示缓冲区写入LCD
按键部分key.c/h
void key_init(void* arg);
int key_getstate(int key);
显示部分
lcd_framebuffer.c/h或者
int lcd_init(char* dev);
void lcd_clear(uint32_t color);
void lcd_setpixel(int index,int x, int y,uint32_t color);
void lcd_switch(int index);
lcd_rtp.c/h

int lcd_init(char* ip,int port);
void lcd_clear(uint32_t color);
void lcd_setpixel(int index,int x, int y,uint32_t color);
void lcd_switch(int index);
main.h中宏#define USE_LCD_RTP 1则使用RTP推流,否则使用framebuffer
编译
aarch64-linux-gnu-gcc main.c dis/dis.c dis/rtp.c dis/x264.c fce/*.c hal.c key.c lcd_rtp.c -lx264 -lm -lpthread -ldl -lortp -L/home/lhj/opt/x264/board/lib -I/home/lhj/opt/x264/board/include -L/home/lhj/opt/board/lib -I/home/lhj/opt/board/include -I./dis -I../include -o litenes
litened导入到开发板
添加可执行权限
chmod +x litenes
LiteNESrom下有一些游戏。

测试

坦克大战

./litenes tank.NES 192.168.1.101 5004 /dev/input/event1
图片1.png
超级玛丽
./litenes chaojimali.NES 192.168.1.101 5004 /dev/input/event1
图片2.png
中国象棋
图片3.png
总结
   至此我们完成NES游戏模拟器的移植,实现了掌上游戏机的项目。后面会继续优化体验,再出一期视频。

更多回帖

发帖
×
20
完善资料,
赚取积分