yuzu模拟器吧 关注:183,615贴子:769,459

补发:Yuzu 2023年8月进度报告(机翻)

只看楼主收藏回复


1楼祭


IP属地:韩国1楼2024-02-05 20:48回复
    2023年8月进度报告
    由...所写GoldenX86和CaptV0rt3x2023年9月13日
    图图鲁~尤兹尔斯。你觉得上一份报告太短了吗?嗯,八月是全速前进!本月提供了重要的图形修复,开发人员围绕GPU限制工作,几个早该修复的文件系统修复,Skyline框架支持,一些Android和Apple的爱,等等!
    永远的玉足炸鸡
    还有罗宾。
    这是最后一块关于Project Y.F.C.,的Query Cache Rewrite,以及的实现Host Conditional Rendering。但是在我们开始之前,我们必须解释一些事情。
    为什么我们需要查询缓存?
    许多GPU会公开计数器用于从GPU执行的各种命令中收集数据——比如绘制了多少像素或生成了多少三角形。游戏使用问题每当需要使用这些计数器时,就获取它们并将其加载到内存中。
    yuzu的查询缓存负责跟踪Switch游戏的GPU计数器的值,并为游戏的查询请求提供服务。
    它是用来做什么的?
    一些游戏可以利用这些获取的数据来进一步优化它们的渲染。举个例子,SUPER MARIO ODYSSEY使用一种常用的称为遮挡剔除.
    遮挡剔除是一项功能,当相机当前看不到对象时,该功能会禁用对象渲染,因为它们位于屏幕外或被其他对象遮挡(遮挡)。
    在…里SUPER MARIO ODYSSEY,游戏首先渲染简单的边界框,这些边界框覆盖了将在屏幕上渲染的所有对象。然后,它查询渲染到每个框的像素数量,并且只渲染其对应框有任何像素渲染的真实对象。
    同样的,Splatoon游戏使用像素计数来检查给定角色触摸的是谁的墨水。游戏测试盟友墨水和敌人墨水,如果两个测试都失败,则角色不会站在任何墨水中。

    中井(Splatoon 2)
    发展与挑战
    yuzu已经有了一个多年前开发的查询缓存。然而,这种实现并不完美,存在许多问题。仅举几例:
    除了像素计数之外,它不能保存任何查询
    它未能以正确的顺序写入内存
    它不会使后来被其他查询类型覆盖的查询无效
    我们的常驻GPU开发人员,Blinkhawk,着手修改查询缓存以解决这些问题并使代码现代化。但是,正如他后来发现的那样,这并不容易。
    回想一下,查询缓存通过在主机GPU上运行查询来工作。事实证明,弄清楚如何让它在主机GPU上工作实际上是整个重写过程中最困难的部分,因为Switch GPU的功能和Vulkan等主机图形API的功能之间存在巨大差异。
    在开发过程中,Blinkhawk在主机GPU查询方面遇到了两大挑战。首先,出于性能原因,我们不能在处理命令后立即将其提交给主机GPU。我们需要对它们进行批处理,以获得任何合理的速度水平。这就引出了一个问题:我们什么时候需要执行查询和同步内存?
    一旦你开始玩游戏,游戏就会开始查询以获取GPU计数器。通常情况下,在计数完成后,即渲染完成时,交换机的GPU会立即获得结果。但是像SUPER MARIO ODYSSEY,它使用遮挡剔除,使许多的问题。
    因此,如果我们尝试运行所有这些查询并以相同的方式在主机(用户的)GPU上写入结果,则在绘制每个场景元素以写回计数器后,GPU将严重停滞。
    为了防止这种情况发生,每当游戏请求GPU等待命令完成渲染时,Blinkhawk都会同步内存。这允许有效的批处理,以及在等待使用计数器值之后发生的GPU命令。

    转动镜头,整个城市神奇地消失了(超级马里奥奥德赛)


    IP属地:韩国2楼2024-02-05 20:50
    回复
      其次,在来宾(交换机的)GPU中,计数器可以随时重置或根本不重置。但是这种行为在OpenGL和Vulkan等图形API中并没有公开。相反,这些API的查询只计算较小的部分,如单次绘制或多次绘制。这意味着我们需要获取所有的查询结果并将它们相加,尤其是在游戏从不重置计数器的情况下。
      在旧的查询缓存中,我们曾经在单个GPU线程上对所有查询结果求和,这跟不上繁重的工作负载。随着查询结果数量的增加,对它们求和所需的时间也增加了。这对于大约50或80个查询来说没有问题,但是一些游戏可以在一个帧内轻松进行数千个查询。
      Blinkhawk试验了一些不同的算法,最后决定采用基于希利斯斯蒂尔扫描算法.
      结果呢?好吧,让下面的列表来说明问题:
      灯笼在Luigi’s Mansion 3是固定的。

      没有闪光弹(路易吉的豪宅3)
      中的详细程度Pokémon Scarlet & Violet在使用高GPU精度时是固定的。不再有树闪烁。
      在一些Koei Tecmo游戏中渲染,例如Marvel Ultimate Alliance 3: The Black Order在使用高GPU精度时是固定的。
      发光粒子Xenoblade Chronicles 2 & 3使用高GPU精度并禁用异步着色器构建时,此问题已得到修复。
      https://tieba.baidu.com/p/8888299697
      正确填充火焰钟(异刃编年史3)
      阴影在Metroid Prime Remastered是固定的。

      不是那个黑暗的萨姆斯(银河战士重制版)


      IP属地:韩国3楼2024-02-05 21:56
      回复
        在使用主机条件渲染的游戏中,低端和/或功耗受限硬件的性能有所提高,例如Pokémon Scarlet & Violet, Luigi’s Mansion 3, SUPER MARIO ODYSSEY,大部分Koei Tecmo头衔,以及许多其他头衔。
        还有更多!
        更多GPU变化
        GPU的变化并没有就此结束;还有很多内容要讲。
        让我们从一个令人惊讶的港口开始:Red Dead Redemption本月在Switch和其他游戏机上发布,随之而来的是专有的RAGE引擎的新版本,给了我们的开发人员一些需要解决的问题。你知道,新发行的通常情况。
        动态GPU双核(Blinkhawk和麦德)分析了游戏并得出结论,最初中断渲染的原因是由于Vulkan上缺乏对masked的支持深度模板清除了。
        深度模板(或组合深度和模板缓冲区)是一种将深度缓冲区和模板缓冲区组合成内存中单个图像的图像类型,可加快GPU的测试速度,以确定是否将绘制任何给定像素。
        更详细地说:
        深度缓冲区存储相机和当前最靠近它的像素之间的距离,允许GPU确定哪些像素将被其他对象覆盖,因此不应绘制。
        模板缓冲区更加专业:它为每个像素存储一个字节,开发人员通常用它来标记某些类型的对象。例如,地面可以被分配值1,树木和树叶2,玩家17等等。了解哪些像素属于哪些对象对于应用各种效果非常有用。这里是一个很棒的视频,展示了模板缓冲区在The Legend of Zelda: Breath of the Wild。本视频中提到的材质遮罩缓冲区是一个模板缓冲区,用于防止效果应用于不需要的材质。
        这些缓冲区的主要用途是正确渲染具有阴影、反射和透明度的场景。如视频示例所示,通过标记每个像素,许多类型的图形效果都变得容易得多,因为这允许GPU根据像素的材质类型有条件地应用效果。
        那么为什么清晰操作在Vulkan上是个问题呢?在图形编程中,清除用于将缓冲区的所有数据重置为指定值。图形API,如交换机的NVN和OpenGL支持应用面具清除操作。应用清除时,遮罩会更改图像的哪些位会受到影响:设定为1的位位置会受到清除的影响,而设定为0的位位置不会受到影响。例如,如果游戏需要8位模板的高4位用于后续抽奖,则可以将掩码设置为二进制00001111,并用值0清除模具。这将导致仅低4位被清零,而高4位根据需要保持不变。
        OpenGL支持所有清除操作的遮罩,包括颜色、深度和模板缓冲。然而,Vulkan旨在支持移动GPU,在移动GPU上,最有效的实现可能是在清除旧缓冲区时完全丢弃旧缓冲区。这避免了从内存读回缓冲区,这可能是昂贵的。因此Vulkan没有直接等效的遮罩清除功能,需要一次性清除图像的整个“外观”(颜色、深度或模板)。
        Red Dead Redemption在模板缓冲区中使用了屏蔽清除。这就是为什么这个bug只影响草地和灌木丛:游戏试图用面具保持这些值不变。但是由于我们直接将游戏中的cleares转换为Vulkan clears,因此我们只是清除了整个模板缓冲区,在此过程中破坏了灌木和草地渲染。
        我们为Vulkan想出的解决方案类似于一个诡计我们以前用于角色5皇家版:使用普通的抽屉,而不是透明的。通过常规绘制,我们能够使用内置硬件支持来应用模板蒙版,并产生与OpenGL相同的结果。
        新系统通过绘制全屏三角形来工作,这允许常规模板硬件处理屏蔽和缓冲写入。多亏了这个,红色死亡救赎中草丛和灌木丛的渲染问题现已解决。你好。不管你喜不喜欢,你都可以直接在脸上得到正确的渲染。


        你有一些龙舌兰酒,然后胡安决定他是一个冒险家(红色死亡救赎)
        Blinkhawk和Maide还发现了在如何模拟间接计算调度方面的旧回归。对于外行人来说,间接调度是一种技术,用于允许GPU从另一个计算着色器或GPU操作生成的结果中获得所需执行的工作量,而不是在记录时由CPU传递。通过让GPU像这样独立工作来避免较慢的CPU路径可以提高性能。如此独立而强大的Tegra X1 GPU。看着它长大。
        多亏了这个后期干预, Mario + Rabbids Kingdom Battle, Mario + Rabbids Sparks of Hope,以及Sea of Solitude现在渲染得更好了:兔子系列中的阴影具有适当的明暗度,并且《孤独之海》中的环境现在可见。


        IP属地:韩国4楼2024-02-05 22:00
        回复

          这一个花了一段时间,嗯(马里奥+兔子王国之战&孤独之海)
          《孤独之海》中的水需要模仿Tegra X1的其他非常棘手的方面,所以这是以后的功课。
          Maide现在也知道了,Accelerated DMA快速路径是一个古怪的女人。她负责直接从GPU上传和下载图像数据,在CPU和系统内存上转换图像数据。但是,它只有在合适的条件下才能发挥作用。如果你在靠近她时不够小心,你就会在错误的时间、错误的地点获得错误的数据。这就是……的幸运Sid Meier's Civilization VI,一个在Vulkan上崩溃的游戏,在OpenGL上完全崩溃。
          罪魁祸首?不将目标缓冲区和/或映像标记为已修改,导致任何将来的读取都不会触发相应的下载。这导致游戏读取了错误的数据。快速通道的这个怪癖现在已经解决了,此外,还增加了一条CPU后备路径,以备某个地址对给定的图像格式无效时使用。战略迷们现在可以尽情地互相攻击了。甘地说和平从来不是一个选项。

          只需再转一圈(席德·梅尔的文明6)
          为了我们的有文化修养的外面的玩家,Blinkhawk和字节[]为我们带来期待已久的修复Bayonetta 3。它们涉及模拟交换机的GPU驱动程序如何模拟硬件不支持的功能。没错。
          这个故事围绕着textureGrad,这是一个OpenGL函数,它基于提供的角度在多个mipmap级别上进行纹理查找,并返回单个纹理元素。
          嗯,Switch的Tegra X1上基于Maxwell的GPU无法对3D纹理进行本机处理,因此它使用SAM和RAM指令进入和离开一种特殊模式,我们对此了解不多-但我们知道它用于计算纹理提取的导数。
          通过寻找这个指令模式,Blinkhawk在2005年为雾和云提供了初步支持Bayonetta 3。稍后字节【】修复了实现以使其按照Blink最初设计的方式运行,并避免基于Mesa和RDNA3的GPU(AMD镭龙RX 7000系列)崩溃。


          IP属地:韩国6楼2024-02-06 22:13
          回复

            神秘的迷雾(魔兵惊天录3)
            不打算就此止步,Blinkhawk还改进了丢弃不必要写入的逻辑并改进了索引缓冲区的大小(其中存储了形成网格的顶点的索引)。结果呢?性能提升69%或更高Bayonetta 3,具体取决于系统规格。很好。



            IP属地:韩国7楼2024-02-06 22:17
            回复

              阿拉,阿拉(魔兵惊天录3)
              byte【】发现yuzu实现的nvnflinger(负责向屏幕呈现的服务)缺少缩放模式选项,保留纵横比。实现它可以解决Gunvolt Chronicles Luminous Avenger iX在它的基础版本中。

              太好了,小精灵们!(枪电压编年史夜光复仇者九号)
              一位用户报告说,很久以前的一个未知更改导致了AI: THE SOMNIUM FILES不断崩溃。byte【】发现罪魁祸首隐藏在分配而非解除分配期间映射的对齐方式中,这是一个最初由前Skyline模拟器开发人员发现的缺陷规章制度. 回归解决,游戏稳定,结案。

              初级,我亲爱的用户


              IP属地:韩国8楼2024-02-07 11:27
              回复
                最后,以构建过程的变化而不是图形代码的变化来结束这一部分。冯钦普斯增加作为外部依赖的MoltenVK到yuzu的CMake设置,允许苹果用户在他们缺乏Vulkan的机器上构建yuzu时自动获得该翻译库的最新版本。(AGXV,有人吗?)

                让我们从简单的东西开始(龙的任务三:拯救的种子)
                适当地跟上MoltenVK的更新可以让macOS版本运行一些基本的游戏,但要让禁果公司的设备跟上速度还有很多工作要做。
                特定于OpenGL的改进,也改进了Vulkan
                没错,Mesa和NVIDIA Fermi/开普勒用户,轮到你得到一些爱了。Epicboy回来了,为老的开启这一切的经典API OpenGL。
                首先是针对OpenGL和Vulkan APIs的GPU ASTC解码的重大改进。代码优化在基于计算着色器的解码器的几个领域中,Vulkan ASTC解码性能提高了60%,但它在NVIDIA上制作了OpenGL15次更快,现在解码ASTC纹理的速度比Vulkan稍快。

                微妙的跳跃
                在Vulkan支持中落后的GPU现在可以在以下游戏中享受更流畅的性能The Legend of Zelda: Tears of the Kingdom, Bayonetta 3, Luigi’s Mansion 3等。
                为了充分利用这一变化ASTC recompression方法必须设置为Uncompressed,以及Enable asynchronous presentation如果您使用Vulkan,则应启用。这两个选项都可以在中找到Emulation > Configure… > Graphics > Advanced.
                toastUnlimited后来屏蔽了梅萨的本地ASTC解码器,因为它现在比我们的实现慢得多。
                最后,Epicboy解决了Pokémon Legends: Arceus我们将Vulkan作为默认API之前的玩家。坐下,孩子们,该讲故事了。
                在不太遥远的过去,yuzu只是在试验一个不完整和不成熟的Vulkan后端,没有LAN局域网支持,Android发布被认为是一个狂热的梦想。当时我们默认使用OpenGL API,在着色器后端的三个选项中,GLASM是首选的着色器后端,因为它不会影响不兼容的驱动程序——这是NVIDIA独有的“功能”,任何其他驱动程序都会自动恢复到与供应商无关的GLSL。这在当时为NVIDIA用户提供了最佳体验,着色器构建时间最短,直到Vulkan改进到足以成为今天的完全替代品。
                在这些迁移期间,一个非常常见的报告是字符阴影Pokémon Legends: Arceus是错误的——它要么给角色引入了奇怪的微粒,要么他们看起来完全没有任何形式的照明。这个问题很快被发现根源于GLASM。
                由于完全缺乏调试和辅助开发的工具,GLASM过去和现在都几乎不可能开发,因此在Rodrigo推出它之后,没有开发人员愿意接触它。后来他离开去了更绿的牧场,这导致我们的GLASM着色器后端变得完全无人维护。
                好吧,进入2023年,Epicboy卷起袖子开始工作。他发现问题出在GLASM如何处理转换反馈。通过实现对多个变换反馈缓冲区的支持,他不仅解决了Switch中唯一一个好的主要Pokémon发行版中的问题(作者认为,你不能证明我错了),而且很可能解决了许多其他依赖变换反馈进行渲染的现代Switch游戏的问题。


                IP属地:韩国9楼2024-02-07 11:31
                回复

                  Gamecube(神奇宝贝传奇:阿尔宙斯)的图形仍然不错
                  我们希望仍在使用永不过时的GTX 400至700系列GPU的勇士们能够从这些变化中受益。
                  Skyline框架:第3部分
                  过了很长时间,looong等等,支持地平线框架,以及对阿克罗波利斯的建模框架Super Smash Bros. Ultimate终于着陆了!但我们太超前了。让我们看看byte【】是如何实现这一点的。
                  作为实现一种称为ASLR(地址空间布局随机化)的安全技术的一部分,在交换机上有一个很大的程序代码加载地址范围。事实上,即使交换机只有4 GB的物理内存,程序代码可以虚拟映射的区域大小也可能高达512GB。程序不应该假设它们在地址空间中的加载位置,因为它们可以在控制台上这个范围内的任何位置移动。事实证明,Skyline框架要求程序不要在区域的最开始加载,但yuzu总是在那里加载程序,导致程序可靠地崩溃。字节[]绕过天际线的限制通过将代码加载地址进一步转移到ASLR区域,为其留出操作空间。
                  yuzu负责处理来自客户代码的服务调用的代码并不完全在理想形状。模拟器早期的一个特别烦人的问题是一个锁,它阻止服务对象接收来自不同会话的并发请求。因为实现是不正确的(锁根本不应该存在),但是很多现有的yuzu代码依赖于它,所以用byte【】代替避免仅在调用套接字接口时锁定,Skyline的TCP记录器处于活动状态时避免死锁。要一劳永逸地解除此服务锁,还需要做更多的工作。
                  有了这些变化,Skyline框架可以运行了,但要让ARCropolis启动并运行,让Smash modding社区高兴起来还需要做一些工作。幸运的是,byte【】并没有止步于此,而是继续实施所需的更改。
                  ARCropolis过去在没有首先设置主机名的情况下连接到SSL/TLS套接字时会错误地启动握手。这是固定的;不变的但是大多数用户还没有更新到正确的版本,所以yuzu必须支持这种行为。
                  最后,yuzu缺少对HTML手动mod的支持,因此byte【】对此实现了支持也是。
                  经过这几次修复后的最终结果是,超级粉碎兄弟终极版的大多数mod现在都可以工作了!


                  让改装开始吧!(超级粉碎兄弟终极版)


                  IP属地:韩国10楼2024-02-07 12:16
                  回复



                    波奇-陈vs梅利亚,世纪之战(超级粉碎兄弟终极版)


                    IP属地:韩国11楼2024-02-07 12:17
                    回复
                      快乐改装!这里有一个教程对于感兴趣的人。
                      泰拉计划。
                      是的,byte【】要求重命名。从现在开始,在盖亚项目进行期间,Terra项目将成为修复当前虚拟文件系统仿真实现的努力的名称。
                      为什么要改名?因为我们有很多修复方法要告诉你。首先,玉足现在支持稀疏和压缩NCA游戏!这意味着之前eShop版本无法启动的一长串游戏现在要么正在运行,要么可以完美播放,并且它们的RomFS可以完全转储。
                      以下是目前正在使用的eShop产品的完整列表:
                      Splatoon 3
                      Bayonetta 3
                      Atelier Ryza 3: Alchemist of the End & the Secret Key
                      Double Dragon Gaiden: Rise of the Dragons
                      OneShot: World Machine Edition
                      Skullgirls: 2nd Encore
                      Everdream Valley
                      Magical Drop VI
                      Hatsune Miku - The Planet Of Wonder And Fragments Of Wishes
                      MLB The Show 23
                      Sports Story
                      Front Mission 1st: Remake
                      Cursed to Golf
                      Ruined King: A League of Legends Story
                      Mega Man Battle Network Legacy Collection
                      还有更多!
                      支持带有前置按键区的游戏卡转储感谢byte【】。这允许在启用转储关键区域选项的情况下使用转储。



                      漂亮的自行车(Fuuraiki 4)


                      IP属地:韩国12楼2024-02-07 12:58
                      回复
                        在yuzu上安装多程序应用程序的更新和DLC(例如内部有几个游戏的游戏启动器)无法正常工作。这意味着像Super Mario 3D All-Stars无论用户做什么,都只会启动基本游戏版本。当前的虚拟文件系统实现无法正确支持这一点,这是Project Gaia致力于解决的许多问题之一。为了绕过这一限制,字节【】创建合成更新元数据在yuzu内部,允许更新/DLC通过并正确加载。
                        无畏托比固定的;不变的一;一个老的回归使用过时方法转储的游戏时,会影响游戏大小在游戏列表中的显示方式。回归有多长时间了?现在已经5岁了。
                        无畏托比还修复了如何处理错误当游戏试图将一个文件重命名为一个已经存在的名称时。这导致了GRID Autosport开机死机。

                        运行于90年代(网格自动运动)
                        不仅如此,FearlessTobi还将yuzu的命令行参数修改为正确加载更新和DLC当启动游戏时—例如,当使用脚本时。
                        用户报告说,一些来自游戏的RomFS转储并不总是包括所有游戏资产,例如KLONOA Phantasy Reverie Series。byte【】的调查显示,RomFS转储代码的几个方面质量低下。经过适度重写后,多标题游戏的RomFS转储现在应该包括所有资产。
                        音频、输入和核心变化
                        让我们从该进度报告的唯一输入更改开始。德国77几乎打破了他的记录!
                        将SDL更新到版本2.28.2修复了程序在后台运行时影响Xbox控制器触发运动事件及其隆隆声的问题。Linux在XInput模式下的8BitDo游戏手柄映射已修复。初始化一些非官方PS4控制器时出现的控制器锁定问题现已修复。
                        一些用户的机器没有正确配置音频设备,这可能导致游戏在启动时锁定。这种可爱的行为迫使Maide在一个测试在启动过程的早期运行查看哪个音频后端可以正确启动音频设备。如果设备无法用cubeb和SDL初始化,将选择零后端,游戏将继续运行,只是没有任何音频输出。
                        如果你发现一个游戏没有声音,但在其他方面正常工作,你应该检查你的驱动程序,检查任何中间程序如均衡器,并检查你的操作系统设置的问题。
                        Opus是一种有损开源且免版税(理应如此)的音频格式,被多款游戏所采用。与VP9视频格式一样,它在yuzu中的实现不仅仅是播放文件那么简单。通过实施这OpenHardwareOpusDecoderForMultiStreamEx和DecodeInterleavedForMultiStream服务方法(Opus多流支持),无畏托比确保游戏如MLB The Show 22现在可以玩了。
                        执行这GetWorkBufferSizeExEx另一方面,服务方法允许Sea of Stars启动。



                        IP属地:韩国13楼2024-02-07 13:02
                        回复


                          没有什么能打败经典RPG(星辰大海)的外观
                          如果有人在游戏中遇到了与音频相关的崩溃(特别是与音频效果相关的崩溃),例如The Legend of Zelda: Tears of the Kingdom, SUPER MARIO ODYSSEY,还有其他一些人,嗯,在ChiefGokhlayeh,迈德找到了损坏的节点Id索引导致了这个问题。
                          byte【】仍然以明智的方式进行着关闭yuzu的战争关机超时以更紧密地匹配开关的行为。大多数游戏现在会在一秒钟内退出。
                          关闭得到改进的另一个方面是取消由TCP日志程序导致的挂起套接字操作,这次与Skyline框架有关。其中一项操作可以一直等待主机被接受。一旦触发关闭事件,这将永远不会完成,因此发布了快速终止协议现在。
                          Android增强
                          除了之前报道的所有变化之外,Android还得到了一些特定的错误修复和UI更改,这要归功于t895:
                          杂项设置调整,包括在列表视图中显示设置值,减少不可编辑设置的不透明度,删除滑块对话框中一些不必要的默认按钮,以及其他一些微小的变化。

                          运行游戏时不能更改这些设置


                          IP属地:韩国14楼2024-02-07 14:03
                          回复
                            显示家庭设置的相关值。
                            对初始设置的更改,显示一个步骤是否完成,并在完成时自动转到下一页。

                            更简单的设置!
                            自动旋转屏幕在风景和反风景之间。
                            搜索最多3个子文件夹深度的程序。
                            使用appCategory将yuzu报告为游戏。这应该会提高游戏启动器的检测能力,但令人惊讶的是,这还不足以让三星的游戏启动器检测到yuzu。
                            设置返工,包括更好的材质动画,隐藏成对选项,添加设置搜索功能,以及正确改进对话框的恢复状态。



                            IP属地:韩国15楼2024-02-07 14:33
                            回复

                              显示进度
                              支持模拟活动的意图,因此用户可以从Daijishō等其他应用程序启动游戏。

                              对于那些喜欢它的人来说
                              增加了创建动态应用程序快捷方式的功能,因此用户可以制作每个游戏的图标。

                              一种更快的游戏方式!


                              IP属地:韩国17楼2024-02-07 16:28
                              回复