mamedev/mame
GitHub: mamedev/mame
MAME 是一个以保存和验证历史软件为核心的多功能仿真框架。
Stars: 10088 | Forks: 2358
# MAME
## 什么是 MAME?
MAME 是一个多功能仿真框架。
MAME 的目的是保存数十年的软件历史。随着电子技术不断向前发展,MAME 防止这些重要的“复古”软件丢失和被遗忘。这是通过记录硬件及其功能来实现的。MAME 的源代码就是这些文档。软件能够运行这一事实,主要用于验证文档的准确性(否则你如何证明你已忠实地重现了硬件?)。随着时间的推移,MAME(最初代表 Multiple Arcade Machine Emulator)吸收了姊妹项目 MESS(Multi Emulator Super System),因此 MAME 现在除了最初重点关注的街机游戏外,还记录了大量(大多是复古的)计算机、游戏主机和计算器。
## 在哪里可以了解更多?
* [官方 MAME 开发团队网站](https://www.mamedev.org/)(包含二进制下载、维基、论坛等)
* [MAME 测试者](https://mametesters.org/)(MAME 的官方错误跟踪系统)
## 开发

### CI 状态与代码扫描
[/badge.svg)](https://github.com/mamedev/mame/actions/workflows/ci-linux.yml) [/badge.svg)](https://github.com/mamedev/mame/actions/workflows/ci-windows.yml) [/badge.svg)](https://github.com/mamedev/mame/actions/workflows/ci-macos.yml) [](https://github.com/mamedev/mame/actions/workflows/language.yml) [](https://github.com/mamedev/mame/actions/workflows/docs.yml) [](https://scan.coverity.com/projects/mame-emulator)
### 如何编译?
如果你使用的是类 UNIX 系统(包括 Linux 和 macOS),操作可能非常简单,只需输入
```
make
```
即可完整编译,
```
make SUBTARGET=tiny
```
即可编译包含一小部分支持系统的版本。
请参阅我们文档网站上的 [编译 MAME](http://docs.mamedev.org/initialsetup/compilingmame.html) 页面以获取更多信息,包括 macOS 和主流 Linux 发行版的先决条件。
对于较新版本的 macOS,你需要安装 [Xcode](https://developer.apple.com/xcode/) 包含命令行工具以及 [SDL 2.0](https://github.com/libsdl-org/SDL/releases/latest)。
对于 Windows 用户,我们提供了一个基于 MinGW-w64 的现成 [构建环境](http://www.mamedev.org/tools/)。
也可以使用 Visual Studio 进行构建,但你仍然需要一个基于 MinGW-w64 的 [构建环境](http://www.mamedev.org/tools/)。
为了生成解决方案和项目文件,只需运行:
```
make vs2022
```
或者使用以下命令直接使用 msbuild 构建:
```
make vs2022 MSBUILD=1
```
### 编码规范
MAME 源代码应使用编辑器设置为使用四个空格作为制表符来查看和编辑。制表符用于行首缩进,每个缩进级别使用一个制表符。其他对齐使用空格。
部分代码遵循 [Allman 风格](https://en.wikipedia.org/wiki/Indent_style#Allman_style);部分代码遵循 [K&R 风格](https://en.wikipedia.org/wiki/Indent_style#K.26R_style)——主要取决于编写原始版本的人。**最重要的是,修改时要保持一致,并尽量减少对现有源代码的空格更改**。对于新代码,多数人更偏好 Allman 风格,因此如果你不太在意,请使用这种风格。
所有贡献者需要要么为许可证信息添加标准头部(针对新文件),要么告知我们他们希望其代码在以下许可证之一下发布:[BSD-3-Clause](http://opensource.org/licenses/BSD-3-Clause) 许可证、[LGPL-2.1](http://opensource.org/licenses/LGPL-2.1) 或 [GPL-2.0](http://opensource.org/licenses/GPL-2.0)。
请参阅我们文档网站上的更多具体 [C++ 编码指南](https://docs.mamedev.org/contributing/cxx.html)。
## 许可证
MAME 整体在以下条款下提供:
[GNU 通用公共许可证,第 2 版](http://opensource.org/licenses/GPL-2.0)
或更新版本(GPL-2.0+),因为它包含了在多种
GPL 兼容许可证下提供的代码。绝大多数源文件(超过 90%
包括核心文件)在
[3 条款 BSD 许可证](http://opensource.org/licenses/BSD-3-Clause)
下提供,我们
鼓励新贡献者以
[本许可证](COPYING)
条款提交贡献。
请注意,MAME 是 Gregory Ember 的注册商标,使用“MAME”名称、标志或标识需要获得许可。
```
Copyright (c) 1997-2026 MAMEdev and contributors
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License version 2, as provided in
docs/legal/GPL-2.0.
This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
more details.
```
请参阅 [COPYING](COPYING) 获取更多细节。
标签:Aarch64, C++, Chaos, CI 构建, MAME, ROM 加载, 可移植性, 图形渲染, 声音仿真, 复古游戏, 多平台仿真, 开源仿真器, 数据擦除, 模拟器核心, 游戏仿真, 电子游戏历史, 硬件仿真, 街机模拟器, 跨平台开发, 软件保存, 输入模拟