maxzhou88吧 关注:6,736贴子:69,172
  • 29回复贴,共1

GBA烧录卡必须要norflash或ram,为什么nds烧录卡就不需要?

只看楼主收藏回复

这个问题我从一开始就不明白。
@maxzhou88
本来想在群里问的,不知道周哥能不能赏个脸在贴吧里给大家科普一发。


IP属地:江苏1楼2015-05-09 23:22回复
    nds的游戏应该是不能在卡里直接执行的,必须从卡里读入到ram才开始执行的,就像PC一样,程序从硬盘读到ram执行。
    gba的nor flash就相当于ram了,游戏是不需要加载的。


    IP属地:广东2楼2015-05-09 23:43
    收起回复
      2025-07-13 12:49:40
      广告
      这问题我也不是一头雾水,但并不确定,说说我自己的想法吧,热烈欢迎指正。
      游戏机读游戏,跟电脑读软件是一样的。PSP游戏动辄1 2个G,但实际解包后,其中大量的数据是音频视频图片什么的,软件的核心代码肯定占不了很大的体积,但它调度着整个游戏的运行。机器内本身有用于执行程序的ram,这个ram只用来读取这些核心代码,而音频视频这些则是按实际需要动态读取。所以运存4G的电脑跑50G的游戏也没问题,运存32MB的PSP跑1 2个G的游戏也没问题。
      游戏机里要有ram,但这个ram里的数据要从游戏卡来读。对gba卡带来说,nand太慢,根本满足不了读取要求,索性卡带里先用nor或是ram装载好游戏,伪装成原版卡让机器去读。而nds机能提升,机器的ram直接从TF读数据也能满足要求。


      IP属地:江苏3楼2015-05-10 00:11
      收起回复
        从这点上见证了时代的变化啊……


        IP属地:四川4楼2015-05-10 00:40
        回复
          gba时代,nandflash还没大量使用,老任又沿革fc时代的卡中运行(play in cartrige )


          IP属地:广东来自Android客户端5楼2015-05-10 03:25
          回复
            首先要搞清楚NandFlash和NorFlash的区别。
            Nor是和RAM一样的直接挂CPU总线的存储器,代码和数据放在里面可以被CPU直接执行和访问,不必搬到RAM运存中来执行。
            Nand是和磁盘、TF卡一样的外设,不直接挂CPU总线,CPU靠设备接口来访问它们,所以CPU不能直接运行Nand中的代码,只能读到直接挂CPU总线的RAM运存中来运行。
            另外,现在Nand的访问速度非常快,为读一个数据它是将附近一个大块都读入内存的。


            IP属地:广东6楼2015-05-10 03:40
            回复
              GBA卡带上的ROM是直接挂CPU总线的(严格来说还不是直接挂,因为32脚的GBA卡带没有那么多引线给CPU总线,要接口来缓冲转换,但从CPU的观点来看,卡带好像有那么多引线,其实是接口欺骗了CPU),所以必须是ROM或Nor,你用Nand话,CPU怎么访问它啊?
              FC,GB/GBC,GBA都是这样的。


              IP属地:广东7楼2015-05-10 03:47
              收起回复
                到了NDS时代,由于游戏代码和数据大了很多,在用Nor或MaskROM就不划算了,因此DS卡就用了Nand,其实原理就象TF卡,它不能直接运行代码,要载入主板的RAM运存来间接运行代码。
                Nand卡带还有个好处,就是楼主所说的动态加载,因此主板的RAM运存不要很大就可以跑DS游戏。


                IP属地:广东8楼2015-05-10 03:51
                回复
                  2025-07-13 12:43:40
                  广告
                  比如我弄的K2(NDSL硬解),跑GBA要256Mbit(32Mbyte)的SDRAM来放GBA的ROM,但跑DS游戏,只要8Mbit(1Mbyte)的SDRAM就可以了,因为是动态加载的。


                  IP属地:广东9楼2015-05-10 03:54
                  收起回复
                    大家可能知道2008年的那个国产2G内存的SP模拟器掌机吧。
                    2G内存其实是主板上的2Gbyte的NandFlash,严格来将不应该叫内存,因该叫闪存。
                    模拟器主板是一个128Mbit(16Mbyte)的SDRAM运存,它还没有GBA最大ROM 32MByte大呢,怎么运行的,就是动态加载嘛。
                    这个动态加载是通过虚拟内存技术来实现的(我们电脑就是采用虚拟内存技术典范),如果模拟器发现缺少数据或代码了,就产生缺页中断,该中断会帮模拟器调入所需要的代码或数据。
                    由于软件理论中有个“执行局部性原理”,基本上缺页中断不会频繁发生,所以游戏跑起来还算流畅。但游戏换画面,换关卡时,代码就偏离了局部性,这时就产生缺页中断调数据,你可以看到游戏会明显卡顿一下。
                    我见过用TF卡代替NandFlsah的GBASP模拟器掌机(TF卡还便宜),当我在游戏运行时将TF拔出,游戏还可以运行一会儿才死机,为什么呢?因为代码运行的局部性,模拟器还在使用主板16Mbyte中的代码呢,你拔TF卡和CPU运行运存中的代码片段无关系,但当游戏换画面时就立马死机,因为“缺页中断”来啦,CPU达不到TF卡中的代码而死机。
                    象GBA这样的卡带就不能拔卡带还能运行一会儿,一拔就立马死机,因为CPU是时时刻刻要直接访问卡带的代码的。


                    IP属地:广东10楼2015-05-10 04:12
                    回复
                      BTW题外话
                      现在老是说手机内存是多大的,其实很不严格,手机是闪存多大,运存多大,这样叫才严格。


                      IP属地:广东11楼2015-05-10 04:14
                      收起回复
                        以前早期GBA的烧录卡是这么实现玩NDS游戏的?不是指PASSME或者引导卡,GBA卡带基本是NOR的芯片


                        IP属地:江苏来自iPhone客户端12楼2015-05-11 09:37
                        收起回复