讨论在 ARM7 上面跑 FC 模拟器的可行方案。
最近玩了玩 PDA 上面的 FC 模拟器。就是小时候的红白机,小霸王其乐无穷!我想在这里讨论一下使用一块 ARM7 或者 ARM9 芯片直接作一个跑 FC 模拟器的难度有多大,不建立在高端操作系统上面的那种。
毕竟现在很多 MP4 的机器都带了 FC模拟器。
如果大家了解 GBA 的人都知道,GBA 的内核就是一个 ARM7。
GBA 为了更好的节约资源,没有使用任何操作系统,在 GBA 上面的 FC 模拟器就是网上的一些高手自己编写的,从 PC 上的模拟器移植过去的。
大家觉得这工作有多大难度呢,有多少人感兴趣呢。我昨天下载了几个 PC 上面 FC 模拟器的源代码,感觉移植难度还是不小的。
大家谈谈自己的看法啦。晚上我上一些我搜集的一些资料。 GBA的arm7处理器频率虽然不高(大概16M),但是它有几个dma通道,而且液晶驱动芯片功能不错,专门针对游戏设计的,图层、卷轴、缩放、精灵都是硬件完成的。用通用的arm7来模拟fc代价可能比gba高。 对的,没有错,我也了解到他是一个专门争对游戏和 2D 引擎加速的专门硬件模块,代价肯定比 GBA 高的。
因为毕竟我们是跑模拟器,不是跑游戏机拉。
关键是对这个东西比较感兴趣,不考虑成本。 我有兴趣,可是才转入ARM,希望能行吧。 应该可以的,现在TFT的2.4寸屏也很便宜~90左右~可以作个小游戏机~DX有资料吗? lvhaian 安哥 的这个想法我也曾有过,不过没有实施.
模拟PC跑个DOS应该可行吧.
PC的模拟器,没有找过这个方面的资料,不过很有兴趣.顶顶!!! 第一份资料:
virtuanes 模拟器源代码
点击此处下载ourdev_186301.rar(文件大小:541K)
另外一个 C++ 的 NES 模拟器源代码
点击此处下载ourdev_186303.rar(文件大小:144K)
NEStreme 模拟器源代码
点击此处下载ourdev_186304.zip(文件大小:297K)
第二份资料: 怎样写 NES 模拟器.txt
点击此处下载ourdev_186320.rar(文件大小:9K) 对FC很有兴趣却又完全不懂ARM的汉子飘过。。。。。 说真的,对FC很有感觉。烂就烂在自己才开始接触ARM。先把资料下来看一下。 研究过了,有难度,估计要200M 的ARM 和 100M 的DSP 才能解决. 上个GBA的资料,还没去仔细看的,是内部的硬件详细说明
点击此处打开ourdev_186340.pdf(文件大小:542K) 【10楼】 lvhaian 安哥
积分:476
派别:
等级:------
来自:上海
研究过了,有难度,估计要200M 的ARM 和 100M 的DSP 才能解决.
//===========================================================================
应该不需要这么快吧,我记得好多年前的486时代就有不少FC模拟器了,那时候的486才几十兆呢 我见过这样的游戏机~可以查FC卡~象个GBA,带个液晶屏,装电池的~新的也只要200~300左右~所以说ARM7应该可以的~ >我见过这样的游戏机~可以查FC卡~象个GBA,带个液晶屏,装电池的~新的也只要200~300左右~所以说ARM7应该可以的~
那个用的是集成的6502+PPU吧。有现成的单芯片封装的,把NES所有的片子都集成进去了。 关注中。
如果在ARM上跑MAME模拟器更好了。 苹果ipod的芯是arm7 国外有在ipod上2次开发做的gameboy模拟器,包括linux操作系统 想得到,做得到。NCE 刚看了看6楼的程序,大多数程序是在做指令的译码转换。推荐个芯片,或许有希望成功。LPC2148,最高可以跑60M,集成DA,连声音都有了,再想办法驱动一块合适的液晶。等一下,44B0是不是就很好啊?关注中。。。。。 关注 刚才在taobao上面查了一下,最低花20多块钱就能买一个新的FC兼容机……
买回来hack一下也不错。 http://www.ouravr.com/bbs/bbs_content.jsp?bbs_sn=741901&bbs_id=9999
看看这个 大家一起讨论啊
顶顶顶 要开发游戏机,首先要有一个游戏机的硬件平台,然后去找游戏开发商合作,如果你找到一家肯支持你的公司,你就可以迈出第一步了。现在ARM的系统非常流行,而且开发难度不大,价格比较便宜,大可以考虑从ARM9统入手,要注重的不是选主CPU的问题,而是选GPU的问题,通过GPU来提高图形质量和支持硬件3D,游戏机才有市场。最重要的,还是要有软件公司帮你的游戏机做软件 , 哈哈 软件咱们自己可以写 啊哈哈 很多游戏MP4不都是支持游戏机模拟的么。要不先基于win mobile平台的pda开发(就是抄一个)一个模拟器先,然后再关心什么自制硬件平台。 我看ARM行,只是图形部分可能需要好好用点心重新编写一下
硬件平台我看用44B就可以了 期待... 去旧货市场淘个原装的FC,上面的6502,6264,PPU之类的都是独立的芯片,做开发更好 已经在arm7上实现fc模拟器,市面常见的rom都能玩,不开声音,速度基本过得去 哎,想当时MC68000+Z80+27512+62256都能做出“拳皇97-2002”、“侍魂1-5”等大作,真不知道现在的程序员是怎么啦。 定上去 , 密切关注 有没有人挑战PS2啊?那玩也不错啊!国内怎么没有人搞搞游戏机啊? 30楼,游戏机最重要的是软件而不是硬件。微软和sony都赔本卖硬件,就是靠软件方面的授权来挣钱的,否则硬件价格太高了,市场接受不了的。以国内的版权意识,开发单机的游戏机根本就是亏本的活(即使避开了游戏机方面的限制政策)。
gba上有几个开源的fc模拟器,其中一个的官网是:
http://www.pocketnes.org/
画面、声音、速度都较完美:
What features does PocketNES have?
PocketNES version 9 is loaded with the following goodies:
Emulates the NES in full speed
Emulates all sound channels
Emulates some of the NES mappers (more info)
Link play support for up to 4 players, single cart and multi cart (more info)
Scaled mode: shrinks the NES display down to fit in the GBA screen, sprite scaling optional (more info)
Unscaled mode: the NES display is in full size cut off by the GBA screen (more info)
State and SRAM saving support, up to 56kbyte, about 10-20 compressed states
Sleep mode, auto sleep after 5 minutes, start+select to wake up
Autofire
Accelerated mode and slow motion
1P/2P Controller switchable
Sprite following in unscaled mode. (creator) (more info)
Optional splash screen (creator) (more info) 27楼 的高手 用的哪个芯片啊 27楼的高手,能详细说一下吗?最近正好对这个感兴趣 顶上去 , arm7 觉得应该可以 , 也不用操作系统 就直接运行 ,game 和 多媒体 用dsp实现也是不错的选择 也想过要用ARM7做个游戏机,最初的想法还是源于我的步步高电子词典,它的官网提供很多游戏下载,也有很多RPG游戏,只是不知怎样读取游戏文件内容。 一定可行,但没市场 【28楼】 JAMESKING
哎,想当时MC68000+Z80+27512+62256都能做出“拳皇97-2002”、“侍魂1-5”等大作,真不知道现在的程序员是怎么啦。
=======================
如今的“程序员”就像农贸市场里的番茄大白菜,化肥浇的,长得快出得多,就是没味道,得论堆撮着卖……
不过另一方面说,任天堂自己也是用集成了全部功能的【单片机】才能做到在GBA上跑GB游戏的,投入和产出的简单对比罢了,各地都一样…… arm7 102m 不要市场,单凭兴趣,密切关注中 MAME有现成的源码, 从那里下手看看如何移植到44b0上就应该可以实现. psp上有mame的模拟器, 据说也是拿pc上mame的源码改的.
我觉得可以先不考虑cpu的速度, 先实现再说. 自己做着玩可以, 想卖就难了~ 我只是一个路过的,不懂这些.能问问,现在有ARM7或ARM9的手机GBA模拟器么? 跪求! 顶!关注中 公司里有移植过NES,32位的处理器,50M够了。 非常的感兴趣 很有 想法纯支持下 很有 想法纯支持下
楼上的有人说开发出来了。。可是一点图啊资料啊都没放。。这个。。。 FC需要用32位处理器来搞吗?用AVR可行不? MARK http://cache.amobbs.com/bbs_upload782111/files_20/ourdev_493688.gif
(原文件名:FC手柄图.gif)
CD4021 的手柄。。。。 关于FC游戏开发、6502资料集中链接
【本文将不断更新!!!】(链接看下划线)
{2008-10-23}
1 模拟MAX论坛-FC研发区 :网上唯一能搜到的国内FC开发_论坛(模拟MAX论坛 » FC游戏讨论区 » FC研发区)有大量资源供下载,不过要积分。众多高手座阵,但缺少技术讨论。适合菜鸟。
2 NESdev(英文) :NES开发。有极多极全的英文资料。工具是好用的,但说明书除了是英文以外,文字格式也是极乱的。知识跳跃性极大,不好理解。
3 Bob Rost(98-026) :网上唯一找到的,较易学的FC编程工具:Nbasic&Nesasm。
Development tools and resources :开发工具及资源。专指Nbasic&Nesasm。
Assignments from the class :助理,实际是几个进阶例程,适合菜鸟。
4 外星论坛-曹老师工作室 :少量资源下载,有较多技术讨论,彼有参考价值。如有具体问题欢迎发问。适合菜鸟。
5 天空联盟论坛 :较专业的FC论坛。
编程专版 :高手们聚首之所。论题深奥,极高阅读权限。菜鸟慎入。
C老师工作室 :游戏业相关话题,历史、潮流、行业、传闻。。。就是没技术资料。
6 周哥工作室 :FC行家。学习教程的入。友情链接也不可放过!
7 惊风工作室_FC专栏 :FC行家。Dump!烧录游戏
8 金明山庄 (KAMMING'S GARDEN) :ROM HACK,改游戏的进。 6502汇编指令集!
-------------------------------addr:代表8位地址 addr16:代表16位地址 data:立即数-------------------------------
数据传送指令
LDA--由存储器取数送入累加器 M→A
符号码格式 指令操作码 寻址方式
LDA ($addr,X) A1 先变址X后间址
LDA $addr A5 零页寻址
LDA #$data A9 立即寻址
LDA $addr16 AD 绝对寻址
LDA ($addr),Y B1 后变址Y间址
LDA $addr,X B5 零页X变址
LDA $addr16,Y B9 绝对Y变址
LDA $addr16,X BD 绝对X变址
//LDX--由存储器取数送入累加器 M→X
符号码格式 指令操作码 寻址方式
LDX #$data A2 立即寻址
LDX $addr A6 零页寻址
LDX $addr16 AE 绝对寻址
LDX $addr,Y B6 零页Y变址
LDX $addr16,Y BE 绝对Y变址
//LDY--由存储器取数送入累加器 M→Y
符号码格式 指令操作码 寻址方式
LDY #$data A0 立即寻址
LDY $addr A4 零页寻址
LDY $addr16 AC 绝对寻址
LDY $addr,X B4 零页X变址
LDY $addr16,X BC 绝对X变址
//STA--将累加器的内容送入存储器 A--M
符号码格式 指令操作码 寻址方式
STA ($addr,X) 81 先变址X后间址
STA $addr 85 零页寻址
STA $addr16 8D 绝对寻址
STA ($addr),Y 91 后变址Y间址
STA $addr,X 95 零页X变址
STA $addr16,Y 99 绝对Y变址
STA $addr16,X 9D 绝对X变址
//STX--将寄存器X的内容送入存储器 X--M
符号码格式 指令操作码 寻址方式
STX $addr 86 零页寻址
STX $addr16 8E 绝对寻址
STX $addr,Y 96 零页Y变址
//STY--将寄存器Y的内容送入存储器 Y--M
符号码格式 指令操作码 寻址方式
STY $addr 84 零页寻址
STY $addr16 8C 绝对寻址
STY $addr,X 94 零页X变址
//寄存器和寄存器之间的传送
符号码格式 操作码 寻址方式 指令作用
TAX AA 寄存器寻址 将累加器A的内容送入变址寄存器X
TXA 8A 寄存器寻址 将变址寄存器X的内容送入累加器A
TAY A8 寄存器寻址 将累加器A的内容送入变址寄存器Y
TYA 98 寄存器寻址 将变址寄存器Y的内容送入累加器A
TSX BA 寄存器寻址 将堆栈指针S的内容送入变址寄存器X
TXS 9A 寄存器寻址 将变址寄存器X的内容送入堆栈指针S
算术运算指令
1. ADC--累加器,存储器,进位标志C相加,结果送累加器AA+M+C→A
符号码格式 指令操作码 寻址方式
ADC ($addr,X) 61 先变址X后间址
ADC $addr 65 零页寻址
ADC #$data 69 立即寻址
ADC $addr16 6D 绝对寻址
ADC ($addr),Y 71 后变址Y间址
ADC $addr,X 75 零页X变址
ADC $addr16,Y 79 绝对Y变址
ADC $addr16,X 7D 绝对X变址
注意:由于进位标志C页会参加运算,所以在做加法运算时,一般要在前面加指令 CLC,清除进位标志
2. SBC--从累加器减去存储器和进位标志C,结果送累加器A-M-C→A
符号码格式 指令操作码 寻址方式
SBC ($addr,X) E1 先变址X后间址
SBC $addr E5 零页寻址
SBC #$data E9 立即寻址
SBC $addr16 ED 绝对寻址
SBC ($addr),Y F1 后变址Y间址
SBC $addr,X F5 零页X变址
SBC $addr16,Y F9 绝对Y变址
SBC $addr16,X FD 绝对X变址
注意:由于在做减法运算时,进位标志C会参与运算,所以在做减法前要先加指令 SEC,置进位标志
3. INC--存储器单元内容增1M+1→M
符号码格式 指令操作码寻址方式
INC $addr E6 零页寻址
INC $addr16 EE 绝对寻址
INC $addr,X F6 零页X变址
INC $addr16,X FE 绝对X变址
4. DEC--存储器单元内容减1M-1→M
符号码格式 指令操作码 寻址方式
DEC $addr C6 零页寻址
DEC $addr16 CE 绝对寻址
DEC $addr,X D6 零页X变址
DEC $addr16,X DE 绝对X变址
5. 寄存器X,Y加1减1
符号码格式 指令操作码 寻址方式
INX E8 隐含寻址
DEX CA 隐含寻址
INY C8 隐含寻址
DEY 88 隐含寻址
逻辑运算指令
1.AND--寄存器与累加器相与,结果送累加器A∧M→A
符号码格式 指令操作码 寻址方式
AND ($addr,X) 21 先变址X后间址
AND $addr 25 零页寻址
AND #$data 29 立即寻址
AND $addr16 2D 绝对寻址
AND ($addr),Y 31 后变址Y间址
AND $addr,X 35 零页X变址
AND $addr16,Y 39 绝对Y变址
AND $addr16,X 3D 绝对X变址
2.ORA--寄存器与累加器相或,结果送累加器A∨M→A
符号码格式 指令操作码 寻址方式
ORA ($addr,X) 01 先变址X后间址
ORA $addr 05 零页寻址
ORA #$data 09 立即寻址
ORA $addr16 0D 绝对寻址
ORA ($addr),Y 11 后变址Y间址
ORA $addr,X 15 零页X变址
ORA $addr16,Y 19 绝对Y变址
ORA $addr16,X 1D 绝对X变址
3.EOR--寄存器与累加器相异或,结果送累加器A≮M→A
符号码格式 指令操作码 寻址方式
EOR ($addr,X) 41 先变址X后间址
EOR $addr 45 零页寻址
EOR #$data 49 立即寻址
EOR $addr16 4D 绝对寻址
EOR ($addr),Y 51 后变址Y间址
EOR $addr,X 55 零页X变址
EOR $addr16,Y 59 绝对Y变址
EOR $addr16,X 5D 绝对X变址
置标志位指令
1. CLC--清除进位标志 0→C 机器码 18
2. SEC--置进位标志C 1→C 机器码 38
3. CLD--清除十进制运算标志D0→D 机器码 D8
4. SED--置十进制运算标志D 1→D 机器码 F8
5. CLV--清除溢出标志V 0→V 机器码 B8
6. CLI--清除中断禁止指令I 0→I 机器码 58
7. SEI--置位中断禁止标志I 1→I 机器码 78 比较指令
1. CMP--累加器和存储器比较
符号码格式 指令操作码 寻址方式
CMP ($addr,X) C1 先变址X后间址
CMP $addr C5 零页寻址
CMP #$data C9 立即寻址
CMP $addr16 CD 绝对寻址
CMP ($addr),Y D1 后变址Y间址
CMP $addr,X D5 零页X变址
CMP $addr16,Y D9 绝对Y变址
CMP $addr16,X DD 绝对X变址
2. CPX--寄存器X的内容和存储器比较
符号码格式 指令操作码 寻址方式
CPX #$data E0 立即寻址
CPX $addr E4 零页寻址
CPX $addr16 EC 绝对寻址
3. CPY--寄存器Y的内容和存储器比较
符号码格式 指令操作码 寻址方式
CPY #$data C0 立即寻址
CPY $addr C4 零页寻址
CPY $addr16 CC 绝对寻址
移位指令
1. 算术左移指令ASL
符号码格式 指令操作码 寻址方式
ASL 0A 累加器寻址
ASL $data 06 零页寻址
ASL $addr16 0E 绝对寻址
ASL $addr,X 16 零页X变址
ASL $addr16,X 1E 绝对X变址
2. 逻辑右移指令LSR
符号码格式 指令操作码 寻址方式
LSR 4A 累加器寻址
LSR $data 46 零页寻址
LSR $addr16 4E 绝对寻址
LSR $addr,X 56 零页X变址
LSR $addr16,X5E 绝对X变址
3. 循环左移指令ROL
符号码格式 指令操作码 寻址方式
ROL 2A 累加器寻址
ROL $data 26 零页寻址
ROL $addr16 2E 绝对寻址
ROL $addr,X 36 零页X变址
ROL $addr16,X 3E 绝对X变址
ROL的移位功能是将字节内容连同进位C一起依次向左移1位
4. 循环右移指令ROR
符号码格式 指令操作码 寻址方式
ROR 6A 累加器寻址
ROR $data 66 零页寻址
ROR $addr16 6E 绝对寻址
ROR $addr,X 76 零页X变址
ROR $addr16,X 7E 绝对X变址
ROR的移位功能是将字节内容连同进位C一起依次向右移1位
堆栈操作指令
1. 累加器进栈指令 PHA 机器码 48
2. 累加器出栈指令 PLA 机器码 68
跳转指令
1. JMP--无条件转移指令
符号码格式 指令操作码 寻址方式
JMP$data16 4C 绝对寻址
JMP ($data16) 5C 间接寻址
2. 条件转移指令
符号码格式 操作码 寻址方式 指令功能
BEQ $data16 F0 相对寻址 如果标志位Z=1则转移,否则继续
BNE $data16 D0 相对寻址 如果标志位Z=0则转移,否则继续
BCS $data16 B0 相对寻址 如果标志位C=1则转移,否则继续
BCC $data16 90 相对寻址 如果标志位C=0则转移,否则继续
BMI$data16 30 相对寻址 如果标志位N=1则转移,否则继续
BPL $data16 10 相对寻址 如果标志位N=0则转移,否则继续
BVS $data16 70 相对寻址 如果标志位V=1则转移,否则继续
BVC $data16 50 相对寻址 如果标志位V=0则转移,否则继续
3. 转移到子程序指令JSR和从主程序返回指令RTS
JSR指令仅仅是 绝对寻址,它的操作码是 20
RTS指令是 隐含寻址,它的操作码是 60 http://blog.donews.com/sailor/archive/2005/04/30/358325.aspx
任天堂红白机 ( NES ) 文档 |
| 版本.2.00 http://blog.csdn.net/silvasaga/archive/2008/11/04/3220731.aspx
任天堂产品系统文件
目录
·1、系统简介
·2、缩写表
·3、中央处理器
·4、图形处理器
·5、声音处理器
·6、手柄、控制器和扩展口
·7、内存映像硬件
·8、I/O端口
·9、NES文件格式
·10、任天堂磁碟机系统
_____________________________________________________________________
1、系统简介
任天堂主机由6502处理器和一个特制的图形处理器组成。CPU是6502,而不是传言中的65C02(CMOS)。PPU的显存是和CPU的内存是分离的,可以通过对特殊端口的读/写来操作。卡带可能包含的内容有位于处理器地址$8000-$FFFF的ROM,和位于PPU地址$0000-$1FFF的 VROM。由于NES只有2K的RAM,因此变量的可用的变量空间只有从$0000到$07FF共8个页面。在开机之后RAM和VRAM中的内容是0,但是注意:复位并不改变其中的内容。在更小的卡带,比如只有16KB的ROM,它占有$C000-$FFFF,而$8000-$BFFF的空间是不用的。那些大于32KB的卡带,它被特殊的电路分页到一定的地址空间。一些卡带在$6000-$7FFF有SRAM,那是电池存储的位置。卡带VROM被用来做图案表(例如 Tile 表, 角色发生器等等)。通常的数量是8KB,包含两个图案表。大于8KB 的VROM被特殊的电路分页到一定的地址空间。内部的VRAM在 PPU 内存里定位于$2000-$3FFF,它用来存储命名表(例如屏幕缓冲)。虽然PPU 支持4个命名表,但只能支持两个的存放空间。另外的两个是开始两个的镜像。NES共有154条指令。
在本文本里,你将遇到如下形式的符号:“Dn" (5 位,3 位,等等)。位是按从最低位(0 位)到最高位(7 位)。所有的十六进制都在前面加上一个美圆符号($)($2002,$4026,等等)是在6502处理器汇编里常用的符号,二进制前面加上一个百分号%。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/silvasaga/archive/2008/11/04/3220731.aspx
http://www.uushare.com/user/lzwcsj/file
FC开发环境及工具 FC相关书籍 这里主要是开发方面的,没有游戏攻略. 包括于春的三本书,f-basic语言与编程技巧,电脑游戏机硬件与编程特技,任天堂游戏编程探密 NES模拟器设计详细资料
邦谷小PC 在我看来,邦谷小PC和步步高多媒体学生电脑的系统就是一样的,包括DOS,BIOS,很有可能出自一人之手,应该是清华大学教授唐瑞春.没有步步高系统的源程序,那么,研究邦谷小PC的也一样. 步步高多媒体学生电脑 我此后的一个重要事件,鼓动我的好朋友买了一台步步高多媒体学生电脑,又邮购了步步高汇编语言,可惜的是,我又有许多地方不懂, 给作者赵福海去信请教,没有给我回信,显然他很忙,但给我寄来两本资料和一张盘 ... http://cache.amobbs.com/bbs_upload782111/files_20/ourdev_493704.jpg
(原文件名:FC主板.jpg)
FC电路图 http://down2.uushare.com:8001/download/get?id=94BF33333835C1D14C761C8722E2C192
电脑游戏机硬件与编程特技_清淅版.pdf 点击此处下载 ourdev_493706.rar(文件大小:2.78M) (原文件名:游戏机_电脑学习机原理、使用和维修_11127813.rar) mark 喜欢模拟器的人还真是不少,组织到处都是啊.幸会幸会!
用ARM7做FC模拟器,如果把图形全部交给其他硬件,比如说用VNC实现,那就不成问题了.如果一定要自带显示屏,得找一块集成LCD控制器的ARM. 打个标签,有空慢慢爽! 有意思,我也来学学。 直接视频输出行不?用ARM模拟CPU 用AVR模拟PPU
这样可以不? 没下文啦?... if{只是练习下编程,熟悉arm硬件,完全的出于兴趣}
else
{
fc用的是早期的摩托骡拉6502的8bit单片机做主cpu,控制 卡带rom,ppu,psg及控制器,这些是硬件平台。fc不过就是个便宜的硬件,任天堂写的程序都是面向fc硬件的,如果用arm就是纯粹的去仿fc,不用OS,个人觉得可以,但是就算行,大家不要忘了一个概念啊,模拟器就是基于一个OS而言所写的一个软件,没有OS咋编译读取?mp4不也是搭建的linux框架移植nes模拟器的。是,我就用纯arm硬件啊,我就拿arm写个程序实现fc,别的不干,能用现成便宜的8bit的,非用32bit的,不觉得是高射炮打蚊子么?
} 楼上的。。语法不对啊。 我写过可运行在arm7上的fc模拟器。
但是最少要200M的cpu才能跑全速。
后来我移植到windows mobile 上了。
可以看看
http://www.yueyuesoft.com/moonnes/moonnes.html mark mark 关注中。 mark一下 不得不顶了 lovemay 山鬼的情人在吗?
最近也在弄这个东西,可否留下你的QQ跟你讨论讨论。 mark mark 太强大了!朝鲜刚0:7输给了葡萄牙,汗~ 还有人在弄这个嘛?我之前移植了一个,跑在208MHZ的ARM926EJS上,运行情况良好,声音输出44K的PCM也OK,但是现在想在104MHz的ARM7EJS上跑,速度很慢,优化的很累额,有经验的一起来讨论下这个东西。 回复【76楼】BenjaminSH
-----------------------------------------------------------------------
你需要多大的ram,来做模拟器?
我移植到STM32上,用了1.2M的SRAM,不太合适啊. 音频输出不要 应该可以完成. RAM 肯定需要大一点, ROM 可以弄到 Nor Flash 上. 顶一个 搞定罗,全部代码45K ROM,占用200KB RAM左右,ARM7运行良好,不过我得承认这个ARM7有点变态.... 现在努力支持mapper163中... 回复【80楼】BenjaminSH
-----------------------------------------------------------------------
楼上是FC高手,变态的ARM7,应该是东芯那款吧。呵呵...
我也找了个简单的FC,不是通用的,虽然支持的游戏少,但是对我来说足够了,有时间再移植到STM32上。 四五年前就作过,关键是效率 关注 我在ARM9上实现过,包括声音和按键功能,帧速可以轻松达到25fps 回复【84楼】liuweieleLiuwei
-----------------------------------------------------------------------
LS,我朋友在联想i50(MTK的手机,应该是arm7吧)上移植实现了FC,SFC,GBA,CPS1模拟器,
其中Fc支持蓝牙联机.....
帧率在不联机时,有50/60fps(没玩过,可能跳过帧).... LS,你如何知道有50/60fps,凭感觉? 我朋友说的是全速....我只有相信了-_-
有另外的朋友玩过....我没买,不能确定....
还说是模拟GBA,有声也很流畅,他说是直接跑GBA的代码,只有中断,IO,PPU等是模拟的,但兼容性就不是很好....
你可以搜下联想i50的评测....这个是做为i50的内置功能的,他是做手机软件的...联想i50的软件解决方案是他们公司弄的,
另外i50内置的iava虚拟机(据说比java虚拟机效率高,还支持java->iava字节码转换-_-)也是我朋友主持开发的.... 在ARM平台上,SFC的效率远远高于FC 我那朋友,以前在文曲星CC800/PC1000/NC1020/NC2000/PC2000/NC2600/NC3000等各经典机型上移植了FC版 的super mario....
当然,画面缩水成单色还小了一半(屏幕只有160*80),这些机器的MCU也是6502指令集的...所以只是重写了io,ppu部分
帧速有60fps(其实由于他个人嫌慢,跑的比FC要快些,应该超过了60fps,我当时玩了这个后来再玩FC就觉得FC上的super mario太慢了-_-) 回复【87楼】snoopyzz
我朋友说的是全速....我只有相信了-_-
有另外的朋友玩过....我没买,不能确定....
还说是模拟gba,有声也很流畅,他说是直接跑gba的代码,只有中断,io,ppu等是模拟的,但兼容性就不是很好....
-----------------------------------------------------------------------
这个帖子中有FC运行视频,帧速为20fps,已经相当快了:
http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=4388367&bbs_page_no=1&search_mode=4&search_text=liuweiele&bbs_id=9999 回复【88楼】liuweieleLiuwei
-----------------------------------------------------------------------
事实上是,WM手机(400MHz以下)上有声全速的FC模拟器(133MHz都有声全速了)满天都是,有声全速的SFC至今没有.... 回复【90楼】liuweieleLiuwei
-----------------------------------------------------------------------
如果帧速为20fps就很快了,只能说明跳帧了.... 回复【92楼】snoopyzz
回复【90楼】liuweieleliuwei
-----------------------------------------------------------------------
如果帧速为20fps就很快了,只能说明跳帧了....
-----------------------------------------------------------------------
我测试一下,看是否跳帧了.... 在20fps下,使用自动跳帧模式,每秒钟跳 2-3 帧,已经很低了;如果不用操作系统,应该会更快. FC全速
PAL制式是50fps
NTSC制式是60fps....
只有20fps,说明跳帧为2,也就是显示1帧后跳2帧...
我个人而言,对跳帧很敏感....50fps以下就能感觉出来....(铁拳打多了的后遗症)
跳帧不会产生不流畅和拖慢的感觉...很多WM上的模拟器都 是跳帧的,但是玩过全速,再玩跳帧,就知道区别了....
本来整屏移动时,一次移一个像素...变成一次移3个.....从点移变成块移了....仔细观察还是挺明显的.... 回复【95楼】snoopyzz
fc全速
pal制式是50fps
ntsc制式是60fps....
只有20fps,说明跳帧为2,也就是显示1帧后跳2帧...
我个人而言,对跳帧很敏感....50fps以下就能感觉出来....(铁拳打多了的后遗症)
跳帧不会产生不流畅和拖慢的感觉...很多wm上的模拟器都 是跳帧的,但是玩过全速,再玩跳帧,就知道区别了....
本来整屏移动时,一次移一个像素...变成一次移3个.....从点移变成块移了....仔细观察还是挺明显的....
-----------------------------------------------------------------------
是的.
真正玩游戏的时候,绝大数人无心在意这些细微的差别,除非跳变成"瞬移"了. 如果搞出来的能在proteus仿就好了... 我跳了4帧... 过几天试试在ARM9上全速是不是可行,其实模拟系统,总线速度很总要,低速存储器会比较麻烦
另外那个虚拟机,如果有同学有兴趣的话,可以一起研究伐,其实我也做了一个,不过没有商用...
feature phone上的所谓虚拟机,要不就是位置无关跑在RAM里的代码,跟boot有点类似,要不就是解释性的引擎,LUA或者类似的机制。
国内只是没有人好好做而已,其实也不难的玩意。
by the way, iava的东西还是不错的,呵呵,他那个ARM7,是MTK的片子,ARM7EJ-S,不过联想的那款机器是ARM926EJ-S,208MHZ
我2011下半年考虑做其他的模拟器,暂时日程表排满了... 可怜:( 可以ARM7上不跳帧也可以,但是声音就成大问题了,我送PCM数据的速度比DSP处理的速度还快,系统根本忙不过来,现在只能强制延时-_-
页:
[1]
2