PS:好几个月前写的文章了,一直没有完善发出来…

前言

之前说的一加 Ace3Pro,体验还是不太行,主要表现是屏幕、系统,以及发热。

屏幕这个在手机上很难有解决方案,现在的旗舰手机都是 OLED 屏幕了,非常辣眼睛。

系统的话,一加可以通过解锁 BL,root 来去除系统的广告和冗余功能,这也是我选择一加品牌的原因(现在能解锁的手机不多了),如果是一加 12 的话,还能刷清爽无广告的国际版 ROM,不过很折腾…

发热只能通过散热背夹了,但便携性就很差了。

现在如果想要 LCD 屏幕的旗舰芯片设备,那么选择就很有限了,一开始我以为只有平板可选(8gen3 的一加 Pad Pro 和天机 9300 的 iQOO Pad),但平板实在太大了,完全没有便携性。

直到我在 B 站看到了奥丁 2 和 aya pocket s 这类 Android 掌机…

这简直就是手机的完美替代品,原生干净的 Android 系统、LCD 屏幕、主动散热、超大电池,除了大一些和重一些,基本完美~

可以说,有了掌机来代替大部分手机使用场景之后,手机我就可以选择配备 LCD 屏幕的了(现在只有中低端手机才可能配 LCD 屏幕),甚至可以使用墨水屏手机来代替。

OK,说回正题,这次我入手了奥丁 2,8gen2 处理器,16+512 的存储配置,性价比不算高,这价格已经能入手同配置的 8gen3 手机了,不过为了原生 Android 系统和 LCD 屏幕,我还是当了一回冤种 😂

包装

我是在 JD 的官方店入手的(非自营)

收到后是一个大箱子,里面就是主机的盒子、保护套、收纳盒、说明书、HDMI 线、钢化膜一大堆零零散散的东西~

这个 HDMI 线是 Micro 2 HDMI 的

保护套

这个是硬壳保护套,粗看起来还行

不过后面实际使用的时候发现了很多问题,比如太小、难以取出、拉链不够好用等。

开箱

开箱之后就是一个小卡片

换个角度

小卡片

小卡片的背面是按键说明

继续开箱

拿掉卡片之后是一层海绵

机器

拿掉海绵之后才是掌机本体

充电线

最下面是充电线(甚至不肯送个充电头)

机器本体

终于把机器本体拿出来了

我特地带上手套来开箱,就是为了避免指纹沾染,在检查机器上是否有使用痕迹的时候,不会被自己的指纹影响到。

目前看来几乎没有使用痕迹,也没有任何指纹,只有左扳机有一点奇怪的痕迹,不确定是否为使用痕迹。其他的 HDMI、耳机、Type-C 接口都没有任何痕迹。

不过当我开机进入系统之后,才发现电池电量是 95,正常全新的机器不会有这么高的电量,所以还是当了一次冤种……😭

再来一张

正面

这么看还是很精致的

背面

背面有大面积的进风口

跑分

这个机器的跑分就比之前说的一加 Ace3Pro 正常多了,CPU 的单核和多核跑分都是 8gen2 的正常水平,同时也比手机的跑分高~

以下是 Geekbench6 的 CPU 跑分,分别是开不同的性能模式(正常、性能、高性能模式)进行测试,分数区别不大。

image-20241114164427845

以下是 GPU 跑分和各个机型的对比

跑分结果 对比
image-20241114164930505 image-20241114164944200

然后是 3dmark 的跑分

image-20241114165117999

模拟器整合包

这类“开源”掌机最正经的用途就是用来玩一些怀旧模拟器,虽然我实际用途不是这个,不过还是根据网上的教程安装整合包来体验一下了。

目前国内比较有名的整合包有俩个,我都体验了一波,感觉还是不错的,非常感谢制作整合包的大佬们的用爱发电!

天马 G

这个是基于 Pegasus 的整合包,完整版好像有 2T 多,这么大的容量很多人都望而却步了,还好贴心的制作团体也提供了精简版,只要 200 多 G,我只是简单体验一下,所以就下载了精简版。

Pegasus 是跨平台的游戏前端工具,可以通过配置文件来定制界面。

官方介绍: A cross platform, customizable graphical frontend for launching emulators and managing your game collection.

官方网站: https://pegasus-frontend.org/

关于这个整合包的具体信息我就不贴了,网上很多介绍,有兴趣的同学可以看下面的链接,里面也有介绍。

这个天马整合包的安装是最方便的,除了下载 ROMs 和安装各种模拟器之外,只要把资源包放在存储根目录里,启动 Pegasus 软件就可以自动解压了,完全是傻瓜式操作。

使用建议

这里下载链接我贴了奥丁 2 和奥丁 2mini 的,按照制作团队的说法,这两个奥丁 2 都能使用,不过我还是建议用奥丁 2 那个就好,虽然奥丁 2 的 Pegasus 版本老一点,不过奥丁 2mini 版本的键位是为 mini 设计的,奥丁 2 使用 mini 的包还得重新设置键位。

模拟器里面使用最多的就是 RetroArch,也就是俗称的全能模拟器,前端通过配置启动参数来调用模拟器,不同类型的游戏使用不同的模拟器,RetroArch 这个模拟器支持非常多的平台,我知道的 GameBoy 全系列就都是用这个模拟器来运行,而且还支持自定义着色器和滤镜什么的花里胡哨的没咋研究…

按键的话默认是用的任天堂布局,也就是 Switch 布局?对我这种用习惯 xbox 的人来说不太习惯,一开始有改一下,需要在 Pegasus 和各个模拟器里都改一遍,不过折腾次数多了也就懒得改了。至于滤镜和着色器什么的,里面内置了一大堆,不过既然是用了整合包就不折腾了,默认来玩就行。

大水杯

大水杯是 B 站一个 up 的名字,相比天马,这个整合包的容量就小一些,总共就 480G 多点好像。

不过大水杯的整合包好像有点小插曲,后面 B 站的视频都删除了,所以现在要下载还不太好找链接。

后面大水杯是把前端换成了 ES-DE,在使用大水杯整合包之前,我也用过这个前端,感觉比 Pegasus 可玩性高一点点?里面内置了主题商店和刮削器,功能多一些,要定制也比较容易。Pegasus 要换主题得自己去官网下载然后解压放到指定目录才行。

大水杯的安装麻烦一点,需要把一堆资源压缩包放到根目录,然后用 root 用户去执行安装脚本(bash 脚本里面做的事就是把各个模拟器的数据还原回去)

天马 VS 大水杯

这俩我最终还是用回天马了。

虽然大水杯的 ES-DE 前端可玩性更强,不过这种整合包最终还是看资源整理得怎么样,天马是每个游戏都有介绍和视频,感觉就很精致,所以我最终还是选了天马。

除此之外很多人纠结的启动速度之类的问题,其实大差不差,要启动速度快那就把 ROMs 都放内部存储得了,储存卡读取速度肯定是比不上内部存储的。

扩展

还有其他游戏前端,大部分都是开源的,我甚至还看到了 Play Store 里有收费的…我浅尝了一下就没折腾了,毕竟模拟器还是没怎么玩的。

然后天马整合包虽然是用 Pegasus 前端,不过也可以用 ES-DE 前端,网上有人研究之后提供了转换方法,不过那个 python 脚本写得太乱了,我重构了一下,使用起来比较方便。

import os
import shutil
from pathlib import Path
from loguru import logger
from tqdm import tqdm


# 修改复制后的游戏文件夹名称为 DS-DE 里的名字
def dir_name_migrate(ds_de_res_path: str, fake_mode=True):
    work_dir = os.path.join(ds_de_res_path, 'downloaded_media')
    total_dirs = len(os.listdir(work_dir))

    logger.info(f'正在重命名文件夹为小写,需要操作 {total_dirs} 个文件夹')

    with tqdm(total=total_dirs, ncols=100, desc='正在重命名文件夹为小写', unit='dir') as pbar:
        for dir_name in os.listdir(work_dir):
            dir_path = os.path.join(work_dir, dir_name)
            new_dir_path = os.path.join(work_dir, dir_name.lower())
            if os.path.isdir(dir_path) and not fake_mode and dir_path != new_dir_path:
                os.rename(dir_path, new_dir_path)

            pbar.update(1)

    dir_name_map = {
        'fba': 'fbneo',
        'fc': 'nes',
        'joiplay': 'flash',
        'md': 'megadrive',
        'pce': 'pcengine',
        'philips': 'cdimono1',
        'pkmini': 'pokemini',
        'psv': 'psvita',
        'sega-32x': 'sega32x',
        'tic-80': 'tic80',
        'vb': 'virtualboy',
        'wsc': 'wonderswancolor',
        'zx': 'zxspectrum',
        '3ds': 'n3ds',
        'dc': 'dreamcast',
        'ngc': 'gc',
        'ps': 'psx',
        'ss': 'saturn',
    }

    for dir_name in os.listdir(work_dir):
        if fake_mode:
            dir_name = dir_name.lower()

        if dir_name in dir_name_map:
            dir_path = os.path.join(work_dir, dir_name)
            logger.info(f'重命名 {dir_path} 为 {dir_name_map[dir_name]}')

            if not fake_mode:
                os.rename(dir_path, os.path.join(work_dir, dir_name_map[dir_name]))


# 把天马G的图片、视频资源复制为 DS-DE 的文件结构
def copy_pegasus_g_media(pegasus_g_roms_path: str, ds_de_res_path: str, fake_mode=True):
    # Count total number of files for the progress bar
    total_files = 0

    logger.info(f'正在扫描: {pegasus_g_roms_path}')

    for platform in os.listdir(pegasus_g_roms_path):
        platform_media_path = os.path.join(pegasus_g_roms_path, platform, 'media')
        if not os.path.isdir(platform_media_path):
            continue
        for game in os.listdir(platform_media_path):
            for _ in os.listdir(os.path.join(pegasus_g_roms_path, platform, 'media', game)):
                total_files += 1

    logger.info(f'找到资源文件数量:{total_files},开始处理资源')

    # Create a tqdm progress bar
    with tqdm(total=total_files, ncols=100, desc="转换天马G资源为ES-DS资源", unit="file") as pbar:
        for platform in os.listdir(pegasus_g_roms_path):
            platform_media_path = os.path.join(pegasus_g_roms_path, platform, 'media')
            if not os.path.isdir(platform_media_path):
                continue
            for game in os.listdir(platform_media_path):
                for media_file in os.listdir(os.path.join(pegasus_g_roms_path, platform, 'media', game)):
                    media_path_obj = Path(media_file)
                    media_path = os.path.join(pegasus_g_roms_path, platform, 'media', game, media_file)
                    target_path = None
                    if media_path_obj.stem.lower() == 'boxfront':
                        target_path = os.path.join(
                            ds_de_res_path, 'downloaded_media', platform, 'covers',
                            f'{game}{media_path_obj.suffix}'
                        )
                    elif media_path_obj.stem.lower() == 'logo':
                        target_path = os.path.join(
                            ds_de_res_path, 'downloaded_media', platform, 'marquees',
                            f'{game}{media_path_obj.suffix}'
                        )
                    elif media_path_obj.stem.lower() == 'video':
                        target_path = os.path.join(
                            ds_de_res_path, 'downloaded_media', platform, 'videos',
                            f'{game}{media_path_obj.suffix}'
                        )

                    if target_path and not fake_mode:
                        os.makedirs(os.path.dirname(target_path), exist_ok=True)
                        shutil.copy(media_path, target_path)

                    pbar.update(1)


# Example usage
if __name__ == "__main__":
    pg_path = r'E:\Roms'
    ds_path = r'E:\Roms-output'
    copy_pegasus_g_media(pg_path, ds_path)
    dir_name_migrate(ds_path, fake_mode=False)

转换为 ES-DE 前端之后,和 Pegasus 前端是可以共存的,互不冲突。

具体的使用方法在 B 站之类的社区一搜就有了,与本文的主题相关性不大,这里就不展开了~

串流

掌机的一大用途是串流,奥丁 2 有 8000mah 的大电池,用来串流也是不错的。

我目前就用两个方案:

  • parsec
  • moonlight+sunshine

其中 parsec 本来是免费好用的,可惜现在已经被屏蔽了,需要魔法才能使用,有点麻烦了,好像同时期网易出了个类似的工具,也是开箱即用,不知道后续会不会收费,可以先试试看。

然后就是 moonlight+sunshine 方案了,moonlight 是客户端,sunshine 需要安装在需要被控制的电脑上,这个方案比较麻烦,而且官方的客户端非常不好用!我用了 axixi fork 的版本,感觉还不错,但还需要搭配虚拟显示器驱动或者 HDMI 显卡诱骗器使用,真的不如 parsec 开箱即用…

系统

奥丁 2 的系统就是原生的 Android,高情商是系统干净无广告,低情商是毛坯房。

不过自带 root 和高自由度,也是现在购买各种国产手机的定制 ROM 无法享受到的了。

对于 Android 系统的折腾这块我的研究不多,玩这种东西很耗时间,后续有空再看看吧~现在能凑合用就完事了。

小结

现在 8gen4(也就是 e lite)都已经出了,8gen2 的性能确实有点不太够看。不过在加上 LCD 和良好的散热和系统可玩性,高性能 Android 掌机可以说暂时还没有替代品。

可惜接下来 Android 掌机的趋势好像也是要上 OLED 屏幕了,难道 8gen2 就是 LCD 党最后的执着了吗?😂