nes 红白机模拟器 第7篇 编译使用方法

模拟器,基于 InfoNES ,作者添加修改以下功能:

1, joypad 真实手柄驱动程序(字符型设备驱动)

2,原始图像只有256*240 ,添加 图像放大算法,这里实现了2种,a, 最近邻插值 b, 双线性插值

(因为2440 速度太慢,采用双线性插值时,大概要3秒算一帧,等以后用 4412 在测试实际效果,本文还会更新)

3,声音支持,原 InfoNES 中,使用 oss 播放声音,添加 使用 alsa 播放支持,

4,LCD显示支持,原 InfoNES 中,使用 Gtk进行显示,作者添加直接绘制到 framebuffer 上,提供 ARM  在 LCD上使用。

编译方法:

1,下载源码, 可以使用 download zip 或者 clone 我的项目地址

git 方法,需要电脑上装有 git 工具,ubunto 可以 apt-get install git , CentOS 可以 yum install git

git 安装以后可以使用以下命令,克隆我的项目

git clone https://github.com/nejidev/arm-NES-linux.git

等待一会儿,就会在当前目录下生成 arm-NES-linux

先编译 真实手柄,驱动,注意,这里是真实的 小霸王,红白机游戏手柄,不是 USB 的,更不是蓝牙的。 接线方式,下面还会重新介绍一下。

cd arm-NES-linux/joypad/

修改 Makefile 中的 内核源码地址

我这里使用的是比较新的 4.1.36 ,相对于 2.6 有一些变化,3.4 基本上变化不大,如果在编译中遇到问题,

需要自己解决,或者给我发站内消息也行。

修改完 Makefile 后执行

Make

会编译生成一个 joypad.ko 将这个文件复制到 开发板的文件系统中。

接着编译 InfoNES 主程序。

回到 arm-NES-linux 位置

cd ..

进入 linux 文件夹

执行 Make 即可,需要说明的是,这里是需要 alsa-lib 库的。你的ARM 板,必须已经有 alsa 声卡驱动,并且安装并配置了 alsa-lib 库的 头文件,库文件等。

执行 Make 后会生成一个可执行文件 InfoNES

将这个文件复制到 开发板文件系统的 usr/bin 中

真实手柄,接线及使用说明。

手柄的公头比较粗,如果使用万能板连接线,可能太细,所以我这里找了一个 DVD 上面拆下来的 手柄插座。以保正,接线连通性。

时间: 2024-12-28 12:44:05

nes 红白机模拟器 第7篇 编译使用方法的相关文章

arm linux 应用程序 nes 红白机模拟器 第1篇

对比了很多种,开源的 NES 模拟器 VirtuaNES , nestopia , FakeNES , FCEUX , InfoNES , LiteNES 最后决定使用 LiteNES 进行移值,它是由 mynes 移值而来.LiteNES 对 mynes 代码进行整理兼容了 C99 标准,编译时无警告. https://github.com/NJUOS/LiteNES https://github.com/yaglo/mynes LiteNES , mynes  基于 Allegro ,All

nes 红白机模拟器 第6篇 声音支持

InfoNES 源码中并没有包含 linux 的声音支持. 但提供 wince 和 win 的工程,文件,通过分析,win 的 DirectSound 发声,在使用 linux ALSA 实现. 先使用 DirectSound 模仿写一个 播放 wav 的程序. 为了简单,我这里使用  vc++ 6.0 (vs2015 实在太大了,电脑装上太卡). 新建一个 mfc exe 项目,基于对话框.放一个按钮,双击添加事件. 添加头文件引用#include <mmsystem.h>#pragma c

arm 2440 linux 应用程序 nes 红白机模拟器 第4篇 linux 手柄驱动支持

小霸王学习机的真实手柄,实测CPU 占用 80% 接线图: 手柄读时序: joypad.c 驱动: 普通的字符设备驱动. 1 #include <linux/module.h> 2 #include <linux/kernel.h> 3 #include <linux/fs.h> 4 #include <linux/init.h> 5 #include <linux/delay.h> 6 #include <asm/uaccess.h>

arm 2440 linux 应用程序 nes 红白机模拟器 第2篇 InfoNES

InfoNES 支持 map ,声音,代码比较少,方便 移值. 在上个 LiteNES  的基础上,其实不到半小时就移值好了这个,但问题是,一直是黑屏.InfoNES_LoadFrame ()  WorkFrame 中一直是 0 . 解决的过程很漫长,最终看到 说是 ADS 中 有符号 无符号的问题,但是 这里用的是 makefile 不是 ADS ,试着改了 makefile 加上 CCFLAGS =  -O2 -fsigned-char . 终于有输出了,性能还算不错. InfoNES 源码

nes 红白机模拟器 第3篇 游戏手柄测试 51 STM32

手柄使用的是 CD4021 ,datasheet 上说支持 3V - 15V . 因为手柄是 5V 供电,2440 开发板上是GPIO 3.3V 电平,STM32 GPIO 也是 3.3V (也兼容5V)电平. 所以先在 STM32 上测试能用后,在接到 2440 开发板上. 正好是 8个键值,用来点 8个 LED .按下一个键,就会亮一个灯. c51 : 1 #include <reg52.h> 2 3 sbit CLK = P2 ^ 2; 4 sbit LATCH = P2 ^ 1; 5

nes 红白机模拟器 第5篇 全屏显示

先看一下效果图,全屏是全了,但是效果非常很一般(差) 放大的原理是使用最初级的算法,直接取对应像素法. 1 /** 2 * 生成zoom 缩放表 3 */ 4 int make_zoom_tab() 5 { 6 int i; 7 zoom_x_tab = (int *)malloc(sizeof(int) * NES_DISP_WIDTH); 8 if(NULL == zoom_x_tab) 9 { 10 printf("make zoom_x_tab error\n"); 11 re

当年击败红白机的奇葩怪招 后来玩山寨的都在学

百合一.千合一,是山寨者往往第一时间想到的法子,无限集成近乎全套功能于一身,甭管好坏.但这往往也就忽悠下好奇的围观群众. 文/张书乐    原载于<人民邮电报>2015年10月23日<乐游记>专栏 红白机被以小霸王为首的中国"山寨"游戏机们击溃,一个关键原因就在于竞争对手的终端产品都能够毫无阻碍地运行红白机的游戏卡带.短短3年的"山寨"之路,让小霸王成功突破年产值10亿元大关.当时,面对正在变成世界工厂.劳动力成本极为低廉的中国对手,且在知识

童年红白机?FC经典游戏600合集for mac

曾经的"小霸王"游戏机,让我们许多80年后.90后度过了一个欢乐愉快的童年,虽然如今这类游戏机和卡带几乎已经退出游戏市场,但经典永远留在了我们这一代人心中.今天给大家分享的小霸王FC经典游戏600合集,带你回顾童年,重温经典!希望大家喜欢! 霸王FC经典游戏600合集之部分游戏介绍 1.<超级马里奥兄弟><超级马里奥兄弟>,是任天堂公司开发并于1985年出品的著名横版过关游戏,是游戏奠基之作,这是一款任天堂针对FC主机全力度身订造的游戏.这个游戏被赞誉为电子游戏

【用PS3手柄在安卓设备上玩游戏系列】FC(任天堂NES/FC主机)模拟器

NESoid 是安卓系统下公认最好的FC模拟器.据我所知,现在安卓系统下面的绝大部分的FC模拟器,都是基于 NESoid 的内核来开发的. 官方网站:http://www.nesoid.com NESoid 是原生支持实体手柄的,下面以<超级魂斗罗>为例说明我的设置步骤: Step1:运行 SixaxisController(以下简称 SC),连接手柄和设备,我的设备是小米2: Step2:扩展菜单按钮 > 设置 > 手柄设置,勾选"启用手柄",然后选择&quo