![]() * ms32.cpp: fix/document memory map * ms32.cpp: preliminary CRTC hookup * ms32.cpp: implement sprite direction bit, nuke per-game kludges * Move note where it belongs (nw) * ms32.cpp, bnstars.cpp: correct sprite RAM ranges * tetrisp2.cpp: kill some legacy screen params, need those anyway * Improve notes (nw) * ms32.cpp: move CRTC to a new sysctrl device Also added a bare-bones Python script for generating new device file defs to src/mame/etc * gen_python_def.py: address issues, misc improvements * Kill device_memory_interface in favour of direct address_map, QA always broken flip_screen in flags * ms32.cpp: reinstated flip screen thru callback * ms32.cpp: Make mixing to honor cliprects instead of erratic screen.width / height call * Need a safeguard somehow, and a symbols build doesn't help here lalala * Fix notes, cannot repro the bug, next * Move irq assert/clear lines to device, add preliminary prg timer, make 30 Hz irq to behave like one. (Note: very untested, feedback is appreciated) * Send a prg timer ack if irq is disabled * Misc cleanups * Nuke emu_timers in favour of configure_scanline, preliminary bnstars1 hookup * No magic number please * Add sysctrl to tetrisp2.cpp, move rockms stuff into its own state machine, misc * Kill off 30 Hz refresh rate hack in stepstag/vjdash sub screens * Flag all those xtals as unknown * Move has_zoom/has_yuv in ms32_sprite init constructor, fix dummy config bug with stepstag right screen update * jalcrpt.h doesn't belong to tetrisp2.cpp, errata on sysctrl reset line * Fix build * Left-over * Fix bool comparison to itself (blame JS habits), nuke bnstars1 mahjong switch case altogether. * Notes * Fix bnstars1 crash * update_color fn doesn't work without a memory_share_creator, documentation * Translate clamp_to_12bits_neg to a constexpr method * Fix crashing in main ms32 driver, except it now has very broken priority for seemingly no reason * Fix nasty spriteram buffer RAM allocation bug * Make objectram_size to be calculated at init time * First (naive) pass in moving common interface to a ms32_base_state Move m_irqreg save state from video_start to machine_start fn; Fix embarassing palette overflow bug in ms32.cpp; Add bitswap for bnstars1 mahjong panel; .bytes() -> .length() for objectram_size; * bnstars: template video handlers * bnstars: fix config, split sprite chips/gfxdecode/palette into two, fix palette ranges * ms32.cpp: implement proper irq acknowledge lines * Add config setter in sysctrl for inverted vblank/field lines, make tp2ms32 and wpksocv2 happy * Move f1superb to own state * MS32 merge sound maps * Remove TIMER_DEVICE_CALLBACK_MEMBER in favour of emu_timer |
||
---|---|---|
.github/workflows | ||
3rdparty | ||
android-project | ||
artwork | ||
benchmarks | ||
bgfx | ||
ctrlr | ||
docs | ||
doxygen | ||
hash | ||
hlsl | ||
ini | ||
keymaps | ||
language | ||
plugins | ||
projects | ||
regtests | ||
roms | ||
samples | ||
scripts | ||
src | ||
tests | ||
web | ||
.editorconfig | ||
.gitattributes | ||
.gitignore | ||
.travis.yml | ||
COPYING | ||
dist.mak | ||
makefile | ||
README.md | ||
uismall.bdf |
MAME
Build status:
OS/Compiler | Status |
---|---|
Linux/GCC and Clang | |
Windows/GCC and MSVC | |
macOS/Clang |
Static analysis status for entire build (except for third-party parts of project):
What is MAME?
MAME is a multi-purpose emulation framework.
MAME's purpose is to preserve decades of software history. As electronic technology continues to rush forward, MAME prevents this important "vintage" software from being lost and forgotten. This is achieved by documenting the hardware and how it functions. The source code to MAME serves as this documentation. The fact that the software is usable serves primarily to validate the accuracy of the documentation (how else can you prove that you have recreated the hardware faithfully?). Over time, MAME (originally stood for Multiple Arcade Machine Emulator) absorbed the sister-project MESS (Multi Emulator Super System), so MAME now documents a wide variety of (mostly vintage) computers, video game consoles and calculators, in addition to the arcade video games that were its initial focus.
How to compile?
If you're on a *NIX or OSX system, it could be as easy as typing
make
for a MAME build,
make SUBTARGET=arcade
for an arcade-only build, or
make SUBTARGET=mess
for MESS build.
See the Compiling MAME page on our documentation site for more information, including prerequisites for Mac OS X and popular Linux distributions.
For recent versions of OSX you need to install Xcode including command-line tools and SDL 2.0.
For Windows users, we provide a ready-made build environment based on MinGW-w64.
Visual Studio builds are also possible, but you still need build environment based on MinGW-w64. In order to generate solution and project files just run:
make vs2017
or use this command to build it directly using msbuild
make vs2017 MSBUILD=1
Where can I find out more?
- Official MAME Development Team Site (includes binary downloads, wiki, forums, and more)
- Official MESS Wiki
- MAME Testers (official bug tracker for MAME and MESS)
Contributing
Coding standard
MAME source code should be viewed and edited with your editor set to use four spaces per tab. Tabs are used for initial indentation of lines, with one tab used per indentation level. Spaces are used for other alignment within a line.
Some parts of the code follow Allman style; some parts of the code follow K&R style -- mostly depending on who wrote the original version. Above all else, be consistent with what you modify, and keep whitespace changes to a minimum when modifying existing source. For new code, the majority tends to prefer Allman style, so if you don't care much, use that.
All contributors need to either add a standard header for license info (on new files) or inform us of their wishes regarding which of the following licenses they would like their code to be made available under: the BSD-3-Clause license, the LGPL-2.1, or the GPL-2.0.
License
The MAME project as a whole is made available under the terms of the GNU General Public License, version 2 or later (GPL-2.0+), since it contains code made available under multiple GPL-compatible licenses. A great majority of the source files (over 90% including core files) are made available under the terms of the 3-clause BSD License, and we would encourage new contributors to make their contributions available under the terms of this license.
Please note that MAME is a registered trademark of Gregory Ember, and permission is required to use the "MAME" name, logo, or wordmark.

Copyright (C) 1997-2020 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.
Please see COPYING for more details.