前言 前面我们完成了USB手柄按键采集,RTP实时推流H264到PC端显示作为虚拟显示器。完成了移植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 添加可执行权限 chmod +x litenes LiteNESrom下有一些游戏。
测试
坦克大战
./litenes tank.NES 192.168.1.101 5004 /dev/input/event1
超级玛丽./litenes chaojimali.NES 192.168.1.101 5004 /dev/input/event1
中国象棋
总结 至此我们完成NES游戏模拟器的移植,实现了掌上游戏机的项目。后面会继续优化体验,再出一期视频。
|