把龙芯电脑变成怀旧游戏PC是什么体验? 作者:蓬岸 Dr.Quest 编号:81637198 创建于:2019-09-13 17:16:59 修改于:2019-09-13 17:27:03 -------------------- 在我年初回国之后,我就收到了一件特别的“欢迎礼物”,来自@张浩斌 (Link: h ttps://www.zhihu.com/people/c604c4a4daac6526771fe76b922b9611) 的龙梦9S 2A一体机,在他的帖子中,展示了龙芯2F利用模拟器运行游戏的情形:张浩斌: 龙芯能干啥? (Link: https://zhuanlan.zhihu.com/p/60074380) 10多年前,我曾经接触过夏普Zaurus系列Linux PDA,是当时位数不多的ARM Lin ux设备之一,许多爱好者都自行编译移植各路游戏软件到上面,而另外一个启发 我的平台则是为丁果A320开发的Dingux,它运行在同样使用MIPS指令集的君正处 理器上,按道理来说,许多游戏也同样可以移植到龙芯。 (Image: https://pic2.zhimg.com/v2-9f8cdde5a90b851fe3ee31cf287ebaf5_b.j pg) 这启发我尝试移植更多的游戏到这台一体机上,龙梦9S2A使用的是800Mhz的龙芯 2F,而一代开源游戏神器丁果A320使用的君正Jz4740只有360Mhz,理论上讲,所 有Dingux上的游戏都具备移植到龙梦9S2A的潜力。 B站视频:龙芯2F一体机9S2A移植游戏演示 (Link: https://www.bilibili.com/ video/av67000124/) Quake 我尝试的第一个游戏是著名的Quake,1996年发布的Quake以及之后的整个系列在 90~2000年代一直被视为3D游戏的性能标杆,也是各路媒体必备的“跑分神器”,Q uake一代引擎的代码在1999年就以GPL协议发布,成为开源软件,而后续的Quake II和Quake III也陆续开源,开源后的Quake系列被移植到包括Amiga OS、RISC OS这类小众平台在内的许多不同平台,成为比较不同平台游戏性能最常用的工具 之一。 因为在网页里的电脑博物馆 (Link: http://www.dnbwg.com/) 的建设过程中大 量使用了SDL作为移植模拟器到WASM的库,所以我首先尝试了在LibSDL网站上提 到的SDL Quake (Link: https://www.libsdl.org/projects/quake/) ,但是因 为SDL Quake中仍然保留了原始Quake代码中的x86汇编,所以无法在龙芯上编译 ,通过一番搜索,我找到了Linux Quake HOWTO一文:https://www.tldp.org/HO WTO/Quake-HOWTO-3.html (Link: https://www.tldp.org/HOWTO/Quake-HOWTO-3 .html) 最终使用tyrquake (Link: https://disenchant.net/tyrquake/) 编译成功,Ty rQuake会生成使用OpenGL Render的版本以及使用软件渲染器的版本,因为龙芯9 S2A一体机的SM501芯片几乎只有帧缓冲,所以用软件渲染性能更好些。 (Image: https://pic1.zhimg.com/v2-ff348660ebbe4dae3df8731a014f6648_b.j pg) 在http://thandor.net (Link: http://thandor.net) 网站中,我找到了一系列 90年代的CPU运行DOS版本Quake的得分,测试的标准使用了窗口模式,320x200分 辨率,并禁用声音 thandor.net - benchmark - Quake (Link: https://thandor.net/benchmark/3 3) 我们尝试在龙芯一体机下运行类似的测试,在文件夹中执行,使用320x200窗 口模式运行TyrQuake(龙芯一体机的SM501显卡不支持全屏运行在不同分辨率下 ,会黑屏,如果遇到类似的情况,需要使用Ctrl+Alt+Backspace重启XWindow) ./tyr-quake -w -width 320,height 200 -nosound 得到的分数是62.2fps,超过Celeron 300Mhz,低于Pentium II 266Mhz,不过如 果使用较旧的TyrQuake 0.61版代码:http://disenchant.net/files/engine/ty rquake-0.61.tar.gz (Link: http://disenchant.net/files/engine/tyrquake- 0.61.tar.gz) 进行测试,成绩会超过一代超频神器Celeron 300A,超过68 FPS 。 (Image: https://pic4.zhimg.com/v2-4067327bbf7de5c4365cd7eef9cdd25b_b.j pg) 模拟城市 我尝试移植的第二个游戏是模拟城市,SimCity的Linux版本的历史可以追溯到19 93年发布的X11 TCL/Tk版模拟城市,当时这款游戏主要面对的是Sun、SGI等商业 Unix工作站用户。 (Image: https://pic4.zhimg.com/v2-0da5f1cc67a8b38ed2631b47f5e79783_b.g if) 2008年,模拟城市Unix版开发者Don Hopkins将这款游戏的源代码以GPL v3协议 捐赠给OLPC教育笔记本电脑计划,让这款经典的模拟游戏可以运行在各类*nix平 台上,我们直接可以使用Github里的micropolis-activity文件夹编译运行(需 要libxpm-dev和byacc依赖,可以通过apt安装)。 SimHacker/micropolis (Link: https://github.com/SimHacker/micropolis) 模拟城市的移植在一方面也展示出Linux与商业Unix应用之间的互换性,在某种 程度上来讲,使用MIPS指令集的龙芯电脑可以被视为某种“小型机”或“Unix工作 站”。 (Image: https://pic3.zhimg.com/v2-71f06fd1992598d26e8b490024c82b66_b.j pg) 仙剑奇侠传 仙剑奇侠传是在中文世界最有影响力的游戏之一,在2009年开发者weimingzhi开 发了跨平台版本的SDLPAL,在龙芯社区里许多爱好者都曾经尝试过编译这一版本 龙芯2F笔记本逸珑8089D两款游戏 - 阔空晴云 (Link: http://www.linzhihao.c n/archives/1882/) 目前SDLPAL的代码仍然被爱好者们持续维护 https://githu b.com/sdlpal (Link: https://github.com/sdlpal) 新的版本使用了C++11和S DL2,这也让新版本的代码没法在龙梦9S2A使用的共创Linux系统(Debian 5)下 直接编译,好在CodePlex上的旧版本代码可以编译通过:CodePlex Archive (Li nk: https://archive.codeplex.com/?p=sdlpal) (Image: https://pic1.zhimg.com/v2-69b6219ff00e25a3d1452def9344b330_b.j pg) 金庸群侠传 金庸群侠传,最初是铁血丹心论坛上的开发者游泳的鱼发布的,原始的代码没有 包括Linux所需的makefile,不过已有热心的爱好者加入了makefile,可以顺利 编译通过。 游泳的鱼最初的帖子: 【09-01-13】【复刻】金庸群侠传Windows Lua复刻版 【游泳的鱼】 (Link: https://www.dawuxia.net/thread-413121-1-1.html) 加入Linux编译所需的makefile的版本: ZhanruiLiang/jinyong-legend (Link: https://github.com/ZhanruiLiang/jinyong-legend) (Image: https://pic2.zhimg.com/v2-ba9d061efe364d21f2080474dd023415_b.j pg) 德军总部3D 发布于1992年的德军总部3D(Wolfenstein 3D)是最早取得商业成功的第一人称 射击游戏之一,也是共享软件(Shareware)发行模式的早期成功案例,在1995 年成为开源软件,它的代码移植版本很多,Wolf4SDL是其中兼容性较好的版本, 使用了SDL1.2多媒体开发库,可以直接在龙芯一体机上编译运行,与Quake类似 需要注意的是启动的时候要加上 --windowed参数,SM501不支持全屏,一旦全屏 就会黑屏,必须ctrl+alt+backspace重启XWindow 最新的Wolf4SDL代码:https://github.com/AlumiuN/Wolf4SDL/ (Link: https: //github.com/AlumiuN/Wolf4SDL/) 我尝试过的另一个版本:mozzwald/wolf4sdl (Link: https://github.com/mozz wald/wolf4sdl) (Image: https://pic1.zhimg.com/v2-46b13ce21db5c0376fc6202fe9b2ea30_b.j pg) 天旋地转2(Descent II) 天旋地转2是发布于1996年的飞行第一人称射击游戏,也是最早运用PC显卡做3D 加速的游戏之一,在1998年成为开源软件,我使用了D2X项目的移植代码编译到 龙芯一体机上:http://icculus.org/d2x/ (Link: http://icculus.org/d2x/) (Image: https://pic3.zhimg.com/v2-d2ea71358c2256c2de34094522365252_b.j pg) Mini Slug(合金弹头) Mini Slug是Clement CORDE开发的街机游戏合金弹头(Metal Slug)的重实现版 本,而且相比街机版本增加了难度更高的新关卡,代码的可移植性非常好,在开 发者的主页上还可以看到其他一些游戏:Projets (Link: http://oldschoolprg .x10.mx/projets.php) 编译的时候要注意先编译ymlib(使用build_a.sh脚本)音频库,再编译游戏本 身 (Image: https://pic2.zhimg.com/v2-48ae56b8b1258c80c3a012221010c899_b.j pg) ScummVM ScummVM是一个在Linux上非常流行的冒险游戏引擎,可以直接用apt安装 sudo apt-get install scummcm可以运行猴岛的秘密等经典的DOS版游戏,使用 方法可以看这里的介绍 如何使用ScummVM播放复古点对点冒险 | MOS86 (Link: http://mos86.com/8231 9.html) 在龙芯上玩DOS版猴岛的秘密,颇为怀旧的体验 (Image: https://pic3.zhimg.com/v2-b14fbcf87d7d80f7e389e421129c371a_b.j pg) J2ME游戏:MicroEmulator 另一个在龙芯上玩更多游戏的办法是使用Java运行J2ME游戏,我尝试了若干种不 同的模拟器,兼容性比较好的是MicroEmulator: https://sourceforge.net/pr ojects/microemulator/ (Link: https://sourceforge.net/projects/microemu lator/) 为了让MicroEmulator默认加载所有的Library,我们需要编写一个脚本,将所有 的jar文件加入classpath: java -cp \ microemulator.jar:\ lib/cldcapi10.jar:\ lib/cldcapi11.jar:\ lib/microemu-jsr-82.jar:\ lib/microemu-javase-applet.jar:\ lib/microemu-nokiaui.jar:\ lib/microemu-jsr-120.jar:\ lib/microemu-siemensapi.jar:\ lib/microemu-jsr-135.jar:\ lib/midpapi20.jar:\ microemu-jsr-75.jar \ org.microemu.app.Main \ --appclassloader delegating然后将脚本保存成一个.sh文件执行,这样MicroE mulator就自带所有库文件启动了,试了一下,能运行的游戏并不是特别多,一 个可以运行的例子是古墓丽影 (Image: https://pic3.zhimg.com/v2-f0070d8368b040d7f14aa89f5e9b9f8e_b.j pg) 玩游戏玩累了,试一下Processing吧 Processing不是游戏,而是一个多媒体交互开发环境,由于它使用Java开发,所 以跨平台使用比较容易。龙梦9S2A安装的共创Linux自带移植自Sun JVM HotSpot 的Java 5虚拟机,但是Processing 1.5.1运行起来会崩溃,我尝试使用龙芯官网 提供的OpenJDK 6替代它,下载龙芯OpenJDK 6 32位(rc31) Java - 龙芯开源社区 (Link: http://www.loongnix.com/index.php/Java) 在P rocessing官网 https://processing.org/download/ (Link: https://processi ng.org/download/) 下载Processing 1.5.1的X86版,再将龙芯JDK解压出来的j 2sdk-image目录更名为java替代processing自带的java目录就算安装好了,虽然 Processing在运行的时候会提示不能完全和OpenJDK兼容,但还是能运行不少Pro cessing的sketch的。大家可以试一下媒体艺术家Golan Levin的 Floccus: http://www.flong.com/projects/floccus/ (Link: http://www.flo ng.com/projects/floccus/) 还有Meshy:Golan Levin and Collaborators (Link: http://www.flong.com/p rojects/meshy/) (Image: https://pic3.zhimg.com/v2-23b838639a7f23e8e58f0212cadb9a66_b.j pg) 运行一些Linux demo 最后我还尝试了一下 @兰威举 (Link: https://www.zhihu.com/people/8864e71 c92de47f4ee8423ddc83f73f9) 发布在Ubuntu中文论坛里的几个Demo,都可以很 顺利的运行 自制 DEMOSCENE (就是传说中的64K动画) (Link: https://forum.ubuntu.org.c n/viewtopic.php?p=2113127#p2113127) (Image: https://pic3.zhimg.com/v2-e81df7562a30919f9b99e1571bab981a_b.j pg) 又写了一个 demoscene (64K动画) (Link: https://forum.ubuntu.org.cn/view topic.php?t=320271) (Image: https://pic1.zhimg.com/v2-2857bf2801795e4b9680a4d5db508534_b.j pg) 在我看来,这台龙梦9S2A一体机虽然已经是10年之前的产品,但仍然是一款相当 有趣而且强大,可玩性颇高的平台,而让它如此好玩的背后,确是无数出于爱好 不求回报的爱好者们的贡献:Linux PDA社区、开源掌机社区、Demoscene社区、 数字艺术社区、怀旧游戏社区等等。 龙芯处理器及其平台是中国爱好者们的独特财富,就像欧洲以德国为中心的Amig a及Morph OS社区、以英国为中心,依托于ARM架构的RISC OS社区,以及美国使 用Power处理器的Raptor Talos平台社区一样,这些不同于IBM PC兼容机的电脑 架构往往是充满挑战的“练习场”和“试验田”。 当然相比之下龙芯社群还显得有些稚嫩,无论是社群规模、影响和声誉还是跨界 合作都较为有限,我也决定为龙芯社区的建设出一份力,让更多的大众有机会体 验龙芯电脑。我把这台龙梦9S2A一体机捐赠给中关村创业大街的 @极致时空创业 博物馆 (Link: https://www.zhihu.com/people/11cb6c7570e922ed81f22c95b0f 9a30b) 展出,这应该是目前国内唯一可以公开体验龙芯电脑及其游戏的场合, 每个参观者都可以亲自体验用龙芯电脑玩经典游戏的乐趣。 (Image: https://pic3.zhimg.com/v2-2c832eba569fd391d3bab576a0acf7de_b.j pg)