admin管理员组

文章数量:1530518

2024年7月4日发(作者:)

2014年第4期 安徽电子信息职业技术学院学报 No.4 2014 

第13卷(总第73期)JOURNALOFANHUIVOCATIONALCOLLEGEOFELECTRONICS&INFORMATIONTECHNOLOGY General No.73 Vo1.13 

【文章编号]l67l一802X(2014)04—0033—03 

种开源的NES模拟器FakeNES 

王林 

(安徽电子信息职业技术学院, 安徽蚌埠233030) 

[摘要]在对几种较流行的开源NES模拟器进行比较的基础上,介绍了一种可移植性强、源代码采用 

C语言的模拟器软件包FakeNES的结构,并重点分析了FakeNES对声音数据的处理流程和代码实现。 

[关键词]NES模拟器;FakeNES;音频处理单元APU 

[中图分类号]TP317 [文献标识码]B 

An Open Source NES Emulator Named FakeNES 

WANG Lin 

(Anhui Vocational College of Electronics and Information Technology,Bengbu 233030,Anhui) 

圜困固囫 王林——一种开源的NES模拟器FakeNES 

1.编译器: 最低需求: 

Vinu— W

in- 

第4期 

数模拟器都嵌人了与宿主平台相关的汇编代码。 

NES模拟器的功能各不相同,但大多遵循如图 

1所示的运行流程。首先装载R0M( .NES文件)到 

MSVC CPU:>200MHz 源代码用 

aNES d

ows 

2.图形库: 显示卡:支持 C++语言编 

DirectX 7.0 DirectDraw 

以上 RAM:>=1OMB 

内存中,逐条读取并执行ROM指令,生成对应的图 

像画面和声音数据,进而输出,在这个过程中同时还 

接受响应用户的各种按键操作。不同平台上的NES 

写 

模拟器,受软/硬件资源的限制,对模拟器结构、模拟 

器显示和声音输出都有较大差异,在资源受限的系 

统上移植存在一定的难度。 

囊tROM程序翻内存 

厘 查 

N 

蔚鼻● 

l 

I……I 

图1 NES模拟器运行流程 

二、开源NES模拟器比较 

表1 几种较流行的开源NES模拟器 

名称 运行 需要软件支 硬件需求 备注 

环境 持 

1.编译器: 

GNU工具 

链,对于Dos 

需要MINGW 1.最低需求是 

Dos 或GJGPP 最低需求: 指能比较流畅 

Win- 2.图形库:对 CPU:>2o0MHz 地运行大多数 

FC d于Dos和 

Ultra 

ows 

Windows。需 

RAM:>=8MB NES游戏 

Linux 要MINGW 磁盘空间:> 2.源代码用C 

BeOS 支持; 4O0KB 和汇编语言编 

对于Linux, 写 

需要SVGA 

接口或是 

SDL 

- 

r X‘,EB o- 2014. .2U 

1.源代码用 

1.编译器: C++语言编 

Nesto Win— 

C++编译器 写 

2.图形库: 2.在Windows 

pla dows 

DirectX 下执行,实际 

占用内存大 

于11MB 

1.编译器: 

GNU工具链 1.源代码用c 

2图形库:对 语言编写 

Win— 于Windows, 2.在Windows 

Fak— 

dows 需要MINGW CPU:>300MHZ 下执行,占用 

eNeS 

Linux 或Allegro支 内存为7MB 

持,对于 左右 

Linux,需要 

Allegro支持 

目前,开源NES模拟器大多数运行于Windows 

和Linux系统环境下,但是不同模拟器的功能和特 

点存在差异,例如是否支持录像、回放及随时保存游 

戏进度等。不同NES模拟器执行的ROM也存在一 

些区别。表1是几种较常见的开源NES模拟器比 

较。 

三、FakeNES 

FakeNES是全部利用C语言编写的NES模拟 

器,源代码可以从http://sourceforge.net网站免费下 

载,其所有代码完全开源,代码结构清晰,可移植性 

强。FakeNES需要的系统接口全部来自Allegro库, 

主要包括:文件I/O操作函数,音/视频接口函数,一 

些标准C语言函数如malloc,free等。 

(一)FakeNES的目录结构 

FakeNES的主要代码目录结构如图2。Include 

文件夹中包含各种接口实现的头文件。main.c是主 

圜圜国囫 王林——一种开源的NES模拟器Fal【eNES 第4期 

程序文档,内含FakeNES模拟器处理总流程的实现 

代码。audio.C文件包含音频接口的实现代码,video.e 

文件包含视频图像接口的实现代码,tom.e文件包含 

ROM文件处理的实现代码,ppu.c文件包含模拟物 

理运算处理器接口的实现代码。 

图2 FakeNES的主要目录结构 

(--)声音数据的处理流程 

6502处理器内部包含一个音频处理单元 

(APU),负责NES游戏中声音的实时合成。模拟器 

需要模拟APU中5个通道(两个方波,一个三角波, 

个噪音通道,一个PCM音源)中的数据合成,最后 

输出到D/A(数模转换单元)。合成数据为波表, 

FakeNES中最后合成的音频数据格式同WAV音频 

文件中数据块(data chunk)的数据安排。 

FakeNES中,模拟器的执行可以看作一个无穷 

循环,每一次循环都需要生成一屏(帧)图像数据,同 

时需要生成一帧声音数据,然后分别通过LCD屏幕 

和D/A输出。一般来说,NES游戏中要求帧率为 

60fps(NTSC制式)或50fps(PAL制式)。声音数据的生 

成可以根据预先的设定生成高低质量不同的声音, 

质量越高,越耗费CPU时间。如果需要生成NTSC 

制式、双声道、采样率44.1KHz、16bit的声音,那么 

帧,即模拟器的一次循环,需要生成的采样数据为 

44100/60木(16/8)=1470字节;而如果生成PAL制 

式、采样率8KHz、8bit的声音,则一帧声音数据为 

8000/50(8/8)=133字节,两者相差10倍左右。 

(三)声音数据处理的代码实现 

(1)一些数据常量和变量的定义 

#define MAX 4000 

enum{SUQARE 1=0,SQUARE2,TRIANGLE, 

NOISE,DMC,VCR6,EXTEND}; 

int sample=8000/50; 

int count=0; 

int data[NUM—CHANNELS][MAX];//NUM— 

CHANNES为声音通道的数量,在NES中为8 

(2)利用软件模拟NES中APU的几个寄存器, 

例如定时器、线性控制器和音长定时器的功能 

while(count++<sample){ 

data[sQuARE]【count]=xxx; //对于方波通道, 

生成该采样数据 

data[TRIANGLE][eount]=xxx;//对于三角波通 

道 

data[DMC][count]=xxx;||对亍DMC 

囝囝囝目 李琳琳★丛丽——关联翻译观视阈下的语境与生态翻译观视阈下翻译生态环境对比研究 第4期 

those dynasties all gone into the past like the waters 

that have flowed away.【8】 

知语境进行推理;生态翻译观要求译者在翻译生态 

系统对翻译生态环境进行不断的选择与适应。二者 

上例中汉语原文摘自一本名为《走进苏州》的画 

册。为了迎接第28届世界遗产大会的召开,苏州市 

委有关部门组织编写了这本画册。在组织翻译这本 

都关注原语文本、原语作者、译语及译语作读者对译 

者这一翻译的主体的主观能动性的发挥起到制约作 

用。然而,关联翻译观视阈下的语境是指语言的使用 

画册时,编委负责人一开始就明确告诉译者,画册是 

以图为主,文字为辅,文字尽量精简,英文在保留中 

环境,侧重人的认知能力,语境是以使用语言为参 

照,以文化为背景的基本概念,它正是翻译生态环境 

文大意的前提下更要精简。将中英文进行对比,可 

以发现译文中有多处删减,总体变化很大。究其原 

因在于翻译发起者(编委负责人)提出的“精简”翻译 

的要件之一。“翻译生态环境”它是一个由精神环 

境和物质环境所构成的集合体,它概念范畴要比关 

联翻译观的“认知语境”更宽泛,更拓展。 

参考文献: 

[1】胡庚申.生态翻译学解读[J】.中国翻译,2008,(6). 

【2】王建平.语言交际中的艺术——语境的逻辑功能[M].北京: 

求实出版社,1989. 

【3]方梦之.论翻译生态环境【J].上海翻译,201 1,(1). 

【4】高启香.从关联理论看英汉翻译原则[J].武汉理工大学学 

报,2001,(3). 

原则。根据这一原则,译者在进行翻译时在保留原 

语基本信息的情况下,尽量精简译文。具体操作过 

程中“伍子胥建阖间大城”并没有翻译是因为在翻译 

发起者的“精简”原则下,译者考虑到一般外国读者 

不熟悉中国古代历史,即使译出来也没有太大意义, 

否则就必须添加解释,这就违背了翻译发起者的要 

求。“朝代兴亡,王朝更迭,历史就这样在繁荣与毁 

【5】董广才,李琳琳.翻译——语际间的推理阐释行为一读厄 

恩斯特・奥古斯特・格特《翻译作为语际阐释之用》[J].大连民 

族学院学报,2005,(6). 

【6]杨冬梅.《红楼梦》中称谓词的翻译[D】.西安:陕西师范大 

学外国语学院.2004. 

【7】胡庚申.翻译选择适应论[M].武汉:湖北教育出版社,2004. 

[8]杜争鸣.翻译策略与文化[M】.北京:中国经济出版社,2008. 

(责任编辑:卓如) 

参考资料: 

[1I Bl]ue Hawk,NES Technique Report,http://nesdev.parodius. 

com. 

[2】rad Taylor,NES Emulation Development Guide,http:// 

nesdev.parodius.COB. 

[3 NES APU Sound Har3]dware Reference,http://www.slack.net/ 

 ̄ant/nes—emu/apuref.txt. 

_

[4】Open Source NES Emulators,http://sourceforge.net. 

(责任编辑:江玉祥) 

本文标签: 翻译数据模拟器声音代码