「Linux」- 运行任天堂红白机游戏(“小霸王”) @20210308

news/2024/12/23 6:56:29/

问题描述

# 02/16/2021 今天,闲来无事(其实也有事,就是累了,想休息一下),想再玩一玩这些小游戏,重温经典,所以就有了这篇文章,来记录这一过程。当我们不会去买一个红白机,虽然有卖的。我们想在 Linux 中运行红白机游戏,然后娱乐一番,顺便学习了解一些技术上的实现(当然,在工作中这些知识基本是无用的,最多算是开阔视野)。

该笔记将记录:在 Linux 中,如何运行任天堂迷你红白机游戏,以及常见问题处理。

任天堂(Nintendo)

任天堂是日本一家主要从事电子游戏软硬件开发的公司,电子游戏业三巨头之一,现代电子游戏产业的开创者。任天堂创立于1889 年 9 月 23 日,以生产花札起家,1970 年代后期投入电子游戏产业,1983 年推出了第一代家用游戏机 FC,也是我们这篇笔记的主角之一。

红白机(Family Computer)

FC,红白机,Family Computer,FAMICOM,Nintendo Entertainment System,NES,都是指任天堂公司发行的第一代家用游戏机。发布于 1983 年,称为家庭计算机(Family Computer),通常使用 Famicom 称之。

pasted_image.pngpasted_image001.png

但是,我们小时候用的不是红白机,而是小霸王游戏机。二十世纪八十年代末,九十年代初,中国小霸王公司所推出的一系列学习机产品,皆是侵犯知识产权的产物,其仿制对象为日本任天堂公司所销售的FC游戏机,由于当时知识产权观念淡薄,小霸王产品系列一直是被当作合法产品进行宣传的。(那时候我们哪里懂这些,都是些毛儿都没长齐的小屁孩儿……,估计当年用的也不是小霸王,也不知道是哪个小作坊生产的游戏机)
pasted_image002.pngpasted_image003.png

这上面便运行着我们玩过的那些 、超级玛丽、魂斗罗、雪人兄弟、忍者神、坦克大战、马戏团 、热血小子(含足球、篮球、格斗等)、双截龙、SD快打旋风、炸弹人、松鼠大战、三目童子、、古巴战士、中国象棋、西游记、成龙功夫(成龙之龙)、彩虹岛、敲冰块、俄罗斯方块、、电梯大战、沙龙曼蛇、蜘蛛侠、中东战争、火箭车、功夫小子、淘金者、、激龟快打、泡泡龙、洛克人、龙珠、人间兵器、赤影战士、台球、忍者猫、圣斗士星矢、、大力水手、打鸭子(要用枪的,不知道你们有没用过)、脱狱、天使之翼(足球小子)、蝙蝠侠、F、塞车、玛丽医生(类似俄罗斯方块)、推箱子、、星际魂斗罗、影子传说、兔八哥、NBA篮球、街霸、超级大富翁(美国富豪)、小蜜蜂、三只小猪、恶魔城、救火英雄、打砖块 等等吧,有些我们也没有玩过(毕竟是偷偷玩……)。

模拟器与游戏文件

每个 NES 游戏及其数据都保存在一个 ROM 文件中,该文件的格是为 NES(Nintendo Entertainment System),文件的扩展名为 .NES。NES 文件是由 NES(任天堂娱乐系统)视频游戏创建的游戏 ROM,它包含与原始 NES 磁带相同的数据,可以使用 NES 模拟器在 PC 上打开和播放。

所以,现在我们需要做两件事情:(1)下载游戏文件(NES ROM);(2)找到模拟器(Emulator);

游戏文件(ROM)

从最开始,我们就在讨论 Nintendo 游戏,它的游戏的文件为 NES 格式。NES 文件是由 NES(Nintendo Entertainment System)视频游戏创建的游戏 ROM。它包含与原始 NES 磁带相同的数据,可以使用 NES 模拟器中打开和播放。

下载 NES 游戏,可以直接到网上搜索:
1)Nintendo(NES) ROMs
2)Download Complete ROM Sets (Full Sets in One File) ROMs
3)FC任天堂红白机中文模拟器 500经典游戏大集合.rar

模拟器(NES Emulator)

在现有体系中,我们先要有硬件,硬件之上运行操作系统,操作系统之上运行可执行程序。当然,没有操作系统也是可以的,毕竟操作系统本身“就是”可执行程序。所以简单来看便是,硬件读取可执行文件,翻译指令并执行。

如果没有硬件怎么办?模拟器(Emulator)。模拟器的任务是读取可执行文件,将指令解析为当前平台的指令,并交由硬件执行。所以,我们只需要下载模拟器来运行游戏 ROM 即可。

但是,这个世界上又不止有 Nintendo 游戏机器,还有 Super Nintendo 、Nintendo DS、Nintendo 64 等等。这些体系所使用的 ROM 格式也是不相同,所以需要使用不同的模拟器来运行。

mednafen - Mednafen - Multi-system Emulator
运行 Nintendo ROM 文件

ZSNES- ZSNES Home Page - About ZSNES
运行 Super Nintendo ROM 文件

使用 Mednafen 模拟器(NES)

Mednafen 是 Nintendo 模拟器,所以只能运行 .NES 文件,因此到 Nintendo ROMs 下载游戏(当然,还有其他 ROM 下载站点)。

安装 Mednafen 模拟器

# Debian GNU/Linux 10 (buster)
apt-get install -y mednafen# 这是在运行魂斗罗
mednafen Contra\ \(U\).zip

游戏运行成功的截图,故事便这样开始:

pasted_image004.png

为什么运行 .zip 文件,而不是 .nes 文件?
在那个 zip 文件中,包含的就是 .nes 文件。在运行时,mednafen 会自动提取数据,因此没有必要“在提取 .nes 文件后再运行”。

如何获取官方手册?
在 mednafen 的 man 手册中会指出一个关于 mennafen 的 html 文档,里面会有详细的说明。

如果配置 Mednafen 模拟器?
在首次运行后,会生成 $HOME/.mednafen/ 目录,其中包含按键配置、在游戏过程中产生的信息等等。没有 GUI 配置界面也是 mednafen 的缺点,所有的配置都必须通过命令更改或修改 ~/.mednafen/mednafen.cfg 文件。不过,配置只要做一次就够了,所以这也不是个繁琐的事情。

设置手柄(joystick)按键

Mednafen Forum: General => Gamepad Configuration Problems

1)[Alt] + [Shift] + [1],然后屏幕下方会出现类似 GamePad 1: UP (1) 提示消息,
2)这就是在提示我们设置 UP 键,在按下 UP后,(1) 变为 (2),再按一次(即需要按两次确认设置)。
3)接下来,会提示我们设置其他按键;

声音设置(游戏无声音)

emulation - ALSA and Mednafen: No Sound - Ask Ubuntu

问题描述:在启动游戏时,游戏没有声音,这是因为驱动加载失败。提示如下错误:

 Initializing sound...Using "ALSA" audio driver with SexyAL's default device selection.ALSA Error: s
nd_pcm_open(&alsa_pcm, id ? id : "hw:0", SND_PCM_STREAM_PLAYBACK, 0) No such file or directory
Error opening a sound device.

解决方法:
1)在 Debian GNU/Linux 10 (buster) 中,修改 ~/.mednafen/mednafen.cfg 的 sound.driver 为 sdl 即可(我们是这样解决的)。

游戏作弊

Mednafen - Emulation General Wiki

Mednafen 可以保存 Cheat 数据,在下次载入游戏时,能够自动载入作弊信息。

1)[Alt] + [C]
2)按照提示进行数组选择即可

进入全屏模式

通过 [ALT] + [ENTER] 组合键,以切换(进入/退出)全屏状态,双倍快乐。

使用 ZSNES 模拟器(SNES)

ZSNES 是 Super Nintendo 模式器,运行 SNES ROM 文件,因此到 Super Nintendo ROMs 下载游戏(当然,还有其他 ROM 下载站点)。

安装 ZSNES 模拟器

# Debian GNU/Linux 10 (buster)
apt-get install -y zsnes# 运行游戏
zsnes Top\ Gear\ \(USA\).zip

游戏运行成功的截图,新的故事便再次开始:

pasted_image005.png

使用 ZSNES 作弊

Make Your Own Cheat Codes With ZSNES - YouTube

相关文章

「Linux」- 安装 Steam 客户端

参考文献

百度百科/任天堂
百度百科/红白机 (任天堂公司发行的第一代游戏机)
3 NES Emulators to Play Old NES Games in Linux
Nintendo Entertainment System


http://www.ppmy.cn/news/886950.html

相关文章

前端开发和后端开发(java)都是干什么的?前端和Java那个好?

前端开发和后端开发都是干什么的?有哪些区别?通俗地讲,前端干的工作是用户可以直接看得见的,而后端开发的工作主要在服务端,用户不太能直接看到。虽然前端开发和后端开发的工作有巨大的区别,但是他们的工作都是相辅相成的,都是为了更好的用户体验。 1、前端开发: 网站…

YourBatman表白了,在Java 27岁生日这天

你好,我是方向盘(YourBatman) 📚前言 今天是2022年的5月23日,Java迎来了第27个生日。笔者转行于2015年8月才在公司写下第一行代码,已有近7年时间,年龄更是来到了31岁这个“高龄”、“危机重重”的年纪。时…

面向对象程序设计(Java)

JAVA概述 Java既是开发语言也是开发平台 简单,动态,高性能,跨平台,面向对象,健壮性,安全,多线程,分布式(特点) Java是基于信息隐藏和抽象数据类型概念的纯面向对象的语言,Java中每个对象封装数据和方法,而方法实施对数据的处理,Java中可以通过继承,组合机制实…

宠物赛道的泡泡玛特|BarkBox 如何靠一流的订阅服务实现 95% 的用户留存

引言 订阅式电商 ---- 一种不容忽视的 DTC 商业模式 订阅式电商是一种重要的 DTC 商业形式,长期吸引着初创企业及成熟的消费品牌。DTC 初创企业在资本投资的推动下,在酒水、婴儿用品、化妆品、营养补充剂、餐包、宠物食品、剃须刀等领域陆陆续续推出了…

【Pygame实战】超有趣的泡泡游戏来袭——愿你童心不泯,永远快乐简单哦~

导语 ​ ​ 🎈泡泡王国 欢乐多多🎈 咕噜噜,吹泡泡,七彩泡泡满天飘。大的好像彩气球,小的就像紫葡萄。 ​当泡泡漫天飞舞时,大朋友、小朋友都会情不自禁地被它吸引。而当珍珠般的泡泡遇上可 爱的程序员…

c语言弹力球小游戏,超级弹力球

超级弹力球游戏,最休闲的小游戏,游戏玩法比较简单,都是最好玩最实在的玩法模式,用眼睛就可以灵活的进行关卡挑战,玩家需要有一定的实力,毕竟考验操作考验脑力的模式,有能力的玩家快快来&#xf…

陈力:传智播客古代 珍宝币 泡泡龙游戏开发第三讲:html符号实体、超链接

陈力:传智播客古代 珍宝币 泡泡龙游戏开发第三讲:html符号实体、超链接 摘要:通过前节《陈力:传智播客古代 珍宝币 泡泡龙游戏开发第一讲引言》 学习了html运行原理、html文件基本结构、html元素和属性等内容。知道了html (hypertext mark-up language,超文本标记语言…

陈力:传智播客古代 珍宝币 泡泡龙游戏开发第十讲:深入理解盒子模型

陈力:传智播客古代 珍宝币 泡泡龙游戏开发第十讲:深入理解盒子模型 摘要:通过前节《第九讲:块元素、行内元素、标准流、盒子模型》学习了前节介绍了贵阳网站建设中的DIVCSS中类选择器、id选择器和html选择器等内容。本章将PHP教…