Sam下载了fceu_0.96.tar.gz.
首先察看 Makefile.
这个Makefile包含makefile.base。将所有东西编译进去。因为是Linux版本,所以底层使用SDL.
所以Makefile将drivers/cli 中的sdl有关的内容全部编译进去。
主程序从 drivers/cli/sdl.c中开始。
大致看来,FCEU底层显示和声音基本都是使用SDL实现的。
Makefile中,有一项-DUNIXDSP。如果使用这一项,则直接使用OSS driver建立的device--/dev/dsp来播放声音。如果不使用这一项,则通过SDL播放。 SDL底层则可以适配到不同的音频设备上,如OSS, ALSA等。
代码解析:
在Fceu代码目录中,drivers/cli为Linux下实现Fceu的代码段。因为Fceu基于SDL实现,所以底层和SDL有很大关系。
代码起点放在: drivers/cli/sdl.c中。
SetDefaults(); 用来初始化一些设置,这些设置放在全局变量Settings中。
然后进入Fceu的主体:CLImain()
1.FCEUI_Initialize()
NES(FC)的分辨率为:256x224(NTSC) 或 256x239(PAL)
1.1 分配video buffer.
每个scanline有256+15 byte.
一共有最多240个scanline.
另外还有8 byte的alignment。 8byte的catch overflow
所以分配了 (256+16)x 240 + 8 + 8 字节的buffer,并设为128。
1.2 建立目录。
在 "HOME"目录下创建.fceultra 目录,并在其中创建5个目录。
例如: /home/sam/.fceultra/
1.3 load config 或建立config file.
查/home/sam/.fceultra/fceu.cfg文件,如果有,则提取其config,如果没有,则建立。
没有评论:
发表评论