前言
前面我们完成了
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/event
1
超级玛丽
./litenes chaojimali.NES 192.168.1.101 5004 /dev/input/event
1
中国象棋
总结
至此我们完成
NES
游戏模拟器的移植,实现了掌上游戏机的项目。后面会继续优化体验,再出一期视频。
|