nds模拟器吧 关注:69,967贴子:989,611
  • 24回复贴,共1

基于Melonds 的NDS模拟器本地多开联机终极测试

只看楼主收藏回复

20年的时候用0.8.3版本进行过几个游戏的测试,碰到一堆问题,桔梗吧主给了热心解答。
不过还是遗留了一些问题。这次趁疫情居家办公,把本地多开联机的问题研究了个通透,在此记录。
记录分为几部分:
1.NDS的硬件基础
2.NDS的软件基础
3.游戏测试记录


IP属地:上海1楼2022-04-06 13:01回复
    1.NDS的硬件基础(部分内容引用自网络)
    DSi的SoC芯片代号为CPU TWL,主要包含ARM946E-S和ARM7TDMI两颗定制CPU,和图形加速单元.NDS模式下两颗CPU被称作NDS9和NDS7。
    NDS9主要指处理NDS游戏时ARM946E-S的工作模式.ARM946E-S为ARMv5TE指令集架构,采用单发射5级流水线,Dhrystone性能为1.1 DMIPS/MHz,支持4KB数据缓存和8KB指令缓存,以及NDS9专用的16KBDTCM和32KB ITCM.NDS9并未配置VFP浮点单元,所以NDS9只支持定点数.由于支持摄像头游戏,甚至游戏中实时视频对话通信,以及浏览器,音乐播放等更强的系统功能的加入,所以DSi的ARM9CPU主频由66MHz提升到133MHz,部分游戏需要在DSi上游玩时才能开启全部功能,兼容模式下仍然以66MHz的频率运作.NDS9是最主要的处理模式,主要包括游戏的处理和视频信号的输出。
    NDS7主要指负责特定功能时ARM7TDMI的工作模式.ARM7TDMI为ARMv4T指令集架构,采用3级流水线,频率为33MHz,无缓存。


    IP属地:上海3楼2022-04-06 13:02
    回复
      Melonds本地多开不是我没推测错是基于ds无线连接但是他是属于模拟固件mac地址随机


      IP属地:广东来自iPhone客户端4楼2022-04-06 13:30
      收起回复
        2.NDS的软件基础
        2.1 NDS的bios固件
        NDS模拟器的bios文件中,会有arm7.rom和arm9.rom两个文件,分别对应了两个cpu核心。
        第三个关键文件是Firmware.bin。NDS的一种启动模式是模拟器运行后不会直接进入游戏,而是先进入 任天堂主界 面再进入游戏。部分NDS游戏只能通过这个模式才能运行。(比如DS download play)
        实际测试时,有几个firmware.bin有问题,导致无法进入任天堂主界面。
        2.2 NDS的联机软件基础
        可参考melonds.kuribo64.net/board/thread.php?id=871
        对于NDS联机功能研究,最好的教材当属俄罗斯方块,因为它包含了全部三种联机方式。

        NDS联机三种模式:
        a.Wireless play=通信play(日语),在melonds的wifi选项中,勾选local下的bind socket to any address
        然后开两个melonds窗口即可连接。
        需要注意的是,最好取消勾选limit framerate和audio sync,这时游戏会以疯狂的速度运行,但两个窗口联机成功后,速度会自动恢复正常。(其他两种联机模式有问题的情况下也可以参考此设定)
        b.DS download play (有些游戏不会写明 ,但是可以根据上图中的白色线条的磁盘图标来判断),即没有游戏的一方,通过wifi下载开房者的rom后,临时进行联机。
        此模式需要firmware.bin支持。
        一方打开游戏建立房间,
        另一方进入任天堂界面后,点击DS download play进行连接。
        c.wifi connection(对应上图中的橙色线条的磁盘图标来判断)
        对于NDS实体机,仅支持WEP和无加密方式的wifi,但现有路由器基本上不支持wep加密方式的wifi了,所以需要利用手机热点进行联机,并且要将热点设置成无密码形式。
        而melonDS通过内建的melonAP热点来连接服务器。
        官方服务器虽然早在2017年就停运了,但是目前仍有民间私人搭建的服务器还在运营。
        所谓的私服,就是DNS服务器地址。
        有wifi联机功能的游戏,在wifi选项中,设好DNS地址即可远程联机。
        自动获得DNS服务器地址选否,然后填入以下任一DNS服务器地址。
        AltWFC:172.104.88.237
        Wimmfi: 95.217.77.151
        Kaeru: 178.62.43.212
        本地多开的情况下,因为连接服务器需要唯一的mac地址,而一个firmware.bin对应一个mac地址,
        所以需要两个不同的firmware.bin。
        另每次断开连接之后,尝试再次连接失败错误代码52100的话,可以重启一下模拟器。
        2.3 NDS的存档
        melonds电池存档格式为*.sav,且只能读取*.sav格式存档;
        即时存档格式为*.mln(n为阿拉伯数字1-9)
        以植物大战僵尸为例:
        pvz8006034.ml1 即时存档
        pvz8006034.sav 电池存档


        IP属地:上海6楼2022-04-06 14:04
        收起回复
          需要补充的是,melonDS 0.9.4虽然内建了bios文件可以直接运行rom,但是它不能启动NDS的任天堂界面。
          如果需要wifi联机或者DS download play的情况下,还是需要外部的Firmware.bin来支持。


          IP属地:上海7楼2022-04-06 14:08
          收起回复
            b.纳米战机
            通过白色线条的图标,可以知道这个游戏的联机类别是DS download play。
            于是开了两个窗口,建房的窗口用了melonds内置的账号(名字就是melonds)
            而另一个窗口,firmware的名字叫bill nye。这个窗口启动任天堂界面后,
            点击DS download play就可连接主机房间。
            顺便补充下,两个窗口在设置按键时,可以一个设置键盘,另一个设置手柄(两个手柄我没测试,应该也可以)
            ,这样就可以双人同屏双开玩了。




            IP属地:上海9楼2022-04-06 16:24
            回复
              c.植物大战僵尸
              可以看到这个游戏支持两种联机方式,wireless直连就好了,很容易。
              唯一麻烦的是VS模式需要存档解锁,从gbatemp.net直接下载了一个全解锁存档。



              IP属地:上海11楼2022-04-06 16:32
              回复
                a.玛丽奥兄弟
                VS模式:可通过download play和wireless两种模式联机。
                minigame模式:可通过download play模式联机。
                这段文字第5遍发了。。系统跟玛丽奥的主界面图片杠上了,到底哪里违规了不让发...


                IP属地:上海18楼2022-04-06 16:45
                回复
                  d.马里奥派对:看起来也是Download play模式,没测试。
                  e.Tingle no Balloon Fight 气球大战:唯一测试失败的。Download play模式下会持续download进不去游戏...



                  IP属地:上海19楼2022-04-06 16:52
                  回复
                    题外话:
                    目前NDS测试下来联机是没问题,但是游戏本身略简陋。也许这一番研究折腾的过程更有意思一些。
                    其他有什么有意思的本地联机游戏大家也可以推荐下。
                    其他研究过的模拟器:
                    3DS的Citra的联机,去年用超级马里奥测试过。无论是官方还是第三方(游侠)服务器都有卡顿现象,不知现在有没有改进。
                    Wiiu的CEMU大部分是本地多人,所以游戏体验上更胜一筹。
                    Switch的yuzu随着版本叠加,可玩性也越来越高了。上面不少同屏多人游戏。
                    安卓模拟器也可以同屏互联,我以星噬osmos为例,写过一个教程。游戏本身是触屏,但是可以用手柄来代替。
                    PS2模拟器双人游戏较多,FBA街机模拟器不少可4人同屏。


                    IP属地:上海22楼2022-04-06 17:10
                    回复
                      PPSSPP:可同屏多开正常联机,高达VS高达next plus,山脊2,火爆狂飙传奇,炸弹人都正常。
                      可以开4个窗口,4人同屏pk。1P键盘时,其他程序必须是手柄。
                      唯一失败的是火爆狂飙 统治者,多开时,游戏运行速度会变得很快,赛车直接开成火箭。。
                      PC游戏多开:CS1.6 用sandboxie本地多开可以正常联机。不过仅作测试,没什么实用性。
                      用sandboxie测试本地多开PC游戏ben and ed bloody party时,虽然连上了,但是
                      严重延时。用两台电脑局域网互联反而很正常。
                      (PC程序多开时,涉及到软件的互斥锁,用UniversalSplitScreen也可以解锁进行多开)


                      IP属地:上海23楼2022-04-06 17:16
                      回复
                        龟龟,楼主好厉害


                        IP属地:江苏来自Android客户端24楼2022-05-30 02:46
                        回复
                          牛逼克拉斯


                          IP属地:山东来自Android客户端25楼2022-05-30 08:04
                          回复
                            今天发现官网已经升级到0.9.4版本了。另外 才发现安卓版需要新建布局才可以自定义屏幕大小。捣鼓了半天才搞明白。


                            IP属地:江苏26楼2022-06-08 14:04
                            收起回复
                              这个联机可以用来让宝可梦黑白与黑白2联动吗?


                              27楼2022-07-18 17:57
                              回复