![]() * add driver + roms * Revert "Merge branch 'slammast-bootleg' into master" This reverts commit 13846b391dcb0041ee56b90e8140bc58eb0c4c78, reversing changes made to 23d2e67c0f658edb4ab588cd19de9bd62586d349. Undo merge * merge upstream (#8) * aristmk5.cpp: added MACHINE_IMPERFECT_TIMING flag, since games run twice as fast as they should (nw) * more SEGA FD1089 changes (nw) * Mark empty PLD dumps from protected devices as NO_DUMP (nw) For 18CV8 PLDs * fs3216: Add X2212 dump [Bitsavers] - Fix X2212 recall and store mixup (nw) * New NSCSI device for WD33C9x SCSI Controllers (#4449) * New NSCSI device for WD33C9x SCSI Controllers Add a new NSCSI device model for the WD33C9x family of SCSI Controllers. * Add missing shortname calls to logging lines Add missing shortname calls to logging lines * Correct spaces -> tabs Correct spaces -> tabs * at.cpp: Correct Compaq Portable names to show up ... (#4443) * at.cpp: Correct Compaq Portable names to show up when an incomplete name is entered on the command line. * compc.cpp: Moved appropriate comments over from pc.cpp. * pc.cpp: Reorganised for easier readability, updated comments, added Eagle Spirit PC, Compaq Portable and CDP MPC 1600 * pc.cpp: Added ITT XTRA. Boots and works, despite keyboard error. Dump of original graphics card is missing. * wd33c9x: somebody dropped this (nw) * Fix clang build [-Werror,-Wreorder] (nw) * ym2148: Flag framing errors; add error reset command; misc. small changes * msx: Use input merger device for IRQ (nw) * Keep track of which SDL input subsystems were initialized (nw) * new working clone - Bubble 2000 v1.2 New Working Clone Added ------------------------------------------ Bubble 2000 V1.2 [Kevin Eshbach, The Dumping Union] * tetrisp2.cpp: Show version number for World set of Tetris Plus 2 & add comment about v2.7 (nw) * mips1: fix stupid tlb error (nw) * speglsht.cpp : Typo * additional documentation on compiling MAME (nw) * New working machine added ----------- Black Jack (Nintendo Game & Watch) [algestam] * dcs: Fixed ram bank mapping in Denver DCS audio (nw) * voodoo: Add some pre-defined rasterizers for sf2049se (nw) * Games promoted to WORKING San Francisco Rush 2049 Clones promoted to WORKING San Francisco Rush 2049: Special Edition * taito_en: Eliminate set_input_line_vector (nw) * new working clone - Tetris Plus 2 v2.7 Turns out v2.7 WAS dumped.... in 2002!!! New Working Clone Added -------------------------------------- Tetris Plus 2 (World, V2.7) [Team Japump!!!] * tecmosys.cpp: Modify game name / description based on suggestions by fellow devs (nw) * New NOT_WORKING clone ------------------------------- Pang (bootleg, set 6) [ClawGrip, Recreativas.org, The Dumping Union] * Add 'pangbp' (nw) * pc.cpp: Marked the Compaq Portable video ROM as BAD_DUMP. * 68307: More accurate emulation of internal priority interrupt controller * 68340: Preliminary cleanups (nw) * ds3100: Preliminary full implementation of DEC DC7085 quad UART. [R. Belmont] * bfm_sc4.cpp, ymz280b.cpp: Reduce logging spam (nw) * (nw) We have a separate manufacturer field. I've tried to dig up marketing material for systems to check: * The "Eagle PC" really was marketed as "Eagle PC" with various submodels (e.g. "Spirit", "II" and "Turbo"). * "ITT XTRA" was marketed using that name. * The IBM 5550 line was marketed as the "5550" (not "IBM 5550" and not "PC 5550"). * Columbia Data Products did not use "CDP" in the marketing name for the MPC 1600. * gsword.cpp: update notes (nw) * minor bugfix and cleanup (#4456) Fixes leader lamp * hh_sm510: code review bjack (nw) * Fix compile. (nw) * Fix SUBTARGET=nl build. (nw) * Add gitignore to src/lib/netlist. (nw) Also clean up doxygen genereated files in netlist makefile. * Add some example XSLTs that operate on -listxml output * srcclean: treat *.xslt as XML (nw) * 68340: Interrupt overhaul - Interrupts are now properly acknowledged and arbitrated. (Many remain unimplemented.) - Interrupts are no longer automatically cleared upon acknowledgment except for the Programmable Interrupt Timer. - Timer unit clears COM and sets TC and TO in the status register on applicable conditions. - Timer unit's confusion of IE0 (TC IRQ enable) with IE2 (TO IRQ enable) has been sorted out. * 68340: One further note (nw) * Case sensitivity training for INI (nw) (#4455) * Case sensitivity training for INI (nw) The world is not 100% Windows, so case sensitvity is needed. * Further standardization of the formatting (nw) More to go... * Pass 2 of new formatting wave (nw) More to go, though. * wave 3 of formatting cleanup (nw) Further adjustments and cleanups, including unwanted tabs. * Correct filtering instructions (nw) * aristmk5.cpp: promoted some games to working after testing by Hehihachi_73 (nw) * new not working clone ----------------------------------- Tank Force (bootleg) [hammy, The Dumping Union] * WD33C9X: More consistent interrupts, restructuring, and clean ups (#4457) * New NSCSI device for WD33C9x SCSI Controllers Add a new NSCSI device model for the WD33C9x family of SCSI Controllers. * Add missing shortname calls to logging lines Add missing shortname calls to logging lines * Correct spaces -> tabs Correct spaces -> tabs * WD33C9X: More consistent interrupts, restructuring, and clean ups This set of changes can get as far as partitioning and formating a disk for IRIX, but installation still isn't working. * Accidentally merged this in...reverting... Accidentally merged this in...reverting... * -devices/sound/msm5205: Removed unused MCFG_MSM6585 macros, nw -audio/irem, drivers/appoooh, cabal, chinsan, combatsc, crgolf, dacholer, darius, ddragon, de_2: Removed MACHINE_CONFIG macros, nw -drivers/ashnojoe, battlera: Removed MACHINE_CONFIG macros and updated to use non-legacy MSM5205 VCK callback, nw * SEGA FD1089 changes; missed this one (nw) * gundhara lives dip is actually +1 for all settings (nw) * mips1: fix coprocessor exceptions (nw) * set the coprocessor error number in the cause register * corrected side-effect handling in address translation * added logging for RISC/os system calls * mips: rx2030 boots RISC/os Rx2030 systems now boot RISC/os (with FPU disabled) from an existing hard disk image, but require an unimplemented MIPS keyboard emulation to log in. Clean installation requires either SCSI tape emulation or support for a MIPS-only network boot protocol. * wd33c9x: Handle disconnect command properly. Fixes fatalerror in ip225015 with new wd core. nw * indy_indigo2: Switch to using new wd33c9x core, nw * aristmk5.cpp: updated flags as requested in comments to the previous commit (nw) * wd33c9x.cpp: fixed validation error: Device wd33c93.cpp(wd33c93) short name is a duplicate of wd33c9x.cpp(wd33c93) (nw) * comport: Fix size to match image's hashes so that proper auditing can take place (nw) * Make informational verbs a bit more consistent, reduce copy/pasted code, a slight performance improvement for reading localisation files, and more documentation clean-up/correction/clarification * (nw) one shouldn't copy/paste spelling errors; also clean up some comments * New working machine added ----------- Game & Watch: Manhole (new wide screen) [algestam] * gameboy.xml: Add alternate game serials (nw) * nscsi_harddisk_device: track the current block LBA on writes (#4463) * nscsi_harddisk_device: track the current block LBA on writes * nscsi_harddisk_device: track the current block LBA on writes * wd33x9c: Checkpoint commit for co-debugging * ashnojoe: Fixed audio regression, nw * ashnojoe: Missed include file, nw * -drivers/discoboy, docastle, drmicro, dynax, fcrash, firetrap, fromance, gladiatr, gsword, hnayayoi, hyperspt, jangout: Removed MACHINE_CONFIG macros, nw * sm510: added bs1 pin blinking (nw) * xbox: move at devices into mcpx_lpc pci device (nw) More to come. * specpdq: Start fixing blitting ops [O. Galibert] * specpdq: Fix backwards copy [O. Galibert] * Duh (nw) * thomson.cpp: Fix a few typos (nw) * mbc55x: Shuffle code around in preparation for serial keyboard emulation; remove unnecessary debug command (nw) * mbc55x: Rewrite keyboard as HLE serial device * i8251: Protect some members no longer subjected to hacky public use (nw) * gbcolor.xml: Add alternate game serials (nw) (#4467) * gbcolor.xml: Add alternate game serials (nw) * gba.xml: Fix typo (nw) * leapster.xml: New NOT_WORKING software list additions [TeamEurope, ClawGrip] (#4466) * leapster.xml: New NOT_WORKING software list additions [TeamEurope, ClawGrip] --------------------- 500-12202-A - La Conquista de los Numeros (Spa) 500-12206-A - Don Lápiz - Aprender a Dibujar y Escribir 500-12210-A - Spider-Man - El Caso de Las Letras Revueltas (Spa) 500-12227-A - Buscando a Nemo 500-12259-A - El Laberinto de las Letras (Spa) * Add parent-clone relationship (nw) * leapster.cpp: Add Spanish BIOS v1.0 [Sean Riddle, ClawGrip] (#4458) * leapster.cpp: Add Spanish BIOS v1.0 [Sean Riddle, ClawGrip] * Fix string (nt) * new NOT WORKING : Play TV Football 2 [Sean Riddle, Peter Wilhelmsen] (note, vii.cpp, not XaviX) + Baseball 3 + Huntin' 3 (Elan HW) (#4462) * new NOT WORKING : Play TV Football 2 [Sean Riddle, Peter Wilhelmsen] (note, vii.cpp, not XaviX) * note (nw) * kill off old cricket hack, add logging function to calculate crc showing in header for radica games for easy verification * better comment (nw) * basketball seems to have been fixed at some point, remove old notes (nw) * new NOT WORKING Play TV Baseball 3 [Sean Riddle, Peter Wilhelmsen, David Haywood] Play TV Huntin' 3 [Sean Riddle, Peter Wilhelmsen, David Haywood] (need work on the hardware emulation and inputs) * (nw) * (nw) * cps3.cpp : Updates (#4442) * cps3.cpp : Add save states, Convert drawing routine restricted to cliprect rectangle cps3.h : Use private: * cps3.cpp : Add draw case when fullscreen zoom is 100% * cps3.h : Minor updates * psikyo.cpp: Minor corrections (nw) out of whatsnew: changed s1945jn to s1945nj to reflect it's a direct clone s1945n, standardizing clone name format. s1945bl - added note about single bit difference in spritelut graphics data Battle K-Road (Korea) set config default to Korea "for use in" notice * fs3216: Green screen and some attributes (nw) * mbc55x_kbd: The trouble with Unicode (nw) * battlera: Hopefully fix audio regression, nw * -sound/msm5205: Removed MCFG macros, nw -drivers/jantotsu, joctronic, jp, kchamp, klax, kungfur, kurukuru, lucky74, lwings, mermaid, mgavegas, mitchell, mjkjidai, ojankohs, opwolf, pachifev, pcktgal, rastan, rmhaihai, sf, sothello, srmp2, suprgolf, system16, taito_log, tehkanwc, topspeed, trackfld, tubep, wacky_gator, wc90b, yunsung8: Removed MACHINE_CONFIG macros, nw -machine/pce_cd: Removed MACHINE_CONFIG macro, nw * mbc55x_kbd: Add PF1-PF10, Ins/Del and Break keys * mbc55x_kbd: Better guess at INS code (nw) * specpdq: Better boundaries, still some pattern offset issues [O. Galibert] * mips1: fix Clang compile (nw) * leapster.xml: Fix crc32 hash for spidermns (nw) * FixFreq code maintenance and add rgb channel functionality. (nw) * Implement sub-pixel horizontal resolution. (nw) This is not yet used and missing static initialization interface. Electron beams in CRTs are not discrete. They are continous on a scanline. This modification allows a higher horizontal resolution to better model "subpixel" timing. * diserial: Make is_receiver_register_full and is_transmit_register_empty const and inline (nw) * ds128x.cpp: add device ds12885ext same as ds12885 but 256 bytes ram (nw) * xbox.cpp: rename pci device mcpx_lpc to mcpx_isalpc (nw) Also add mc1885ext device as rtc. * mbc55x_kbd: Fix / key; improve documentation again (nw) * new NOT WORKING ClickStart [Sean Riddle, Clawgrip, TeamEurope] + a Software List for it (#4473) * new NOT WORKING ClickStart [Sean Riddle, Clawgrip, TeamEurope] + a Software List for it seems to be something missing, jumps to outside of code area, maybe secondary small internal ROM of CPU. I did think the dumps were half size for various reasons, but there is a checksum in the footer of each one that matches the data (even if another checksum in the header for some of them we can't match) Possible BIOS is wrong tho as that checksum in the footer doesn't match by quite a significant amount. most games show something just by putting a 'RET' opcode in the upper areas it attempts to jump to. Ryan credited in driver since it's more or less just a stripped down copy of vsmile.cpp * more correct (although does less now because of extra checks in new code) (nw) * (nw) * (nw) * Add new driver to mess.flt (nw) * oric.cpp: fixed MT07197 (nw) * spg2xx+vsmile: Started hooking up a control pad. 7x/Bx handshaking and 55 heartbeat works, but no controls respond yet. nw * Improve readability. (nw) * Minor bug fixes and refactoring. (nw) * new NOT WORKING (JAKKS Pacific stuff) WWE (JAKKS Pacific TV Game) [Sean Riddle] Fantastic Four (JAKKS Pacific TV Game) [Sean Riddle] Justice League (JAKKS Pacific TV Game) [Sean Riddle] WWE doesn't render any sprites other than the backgrounds once you get past the 'loading' screen Fantastic Four seems playable but has severe performance issues as the video code isn't optimized for scanline drawing / isn't using cliprect properly (runs about 10-15% speed in places) can probably be promoted once that's fixed Justice League might actually be working, just need to test it more. Need to find out how to get into the hidden test menus to run the ROM checks etc. * test mode notes (nw) * (nw) * documentation (nw) * (nw) * (nw) * note (nw) * v102: Add serial ports and prepare for serial keyboard (nw) * -clickstart: Favor specific values over rand(), nw -devices/cpu/unsp: Added a function to get current chip-select state, nw -devicesp/machine/spg2xx: Various changes: [Ryan Holtz] * Added 4kHz/2kHz/1kHz/1Hz timers. * Added ADC read callback. * Fixed a bug with floating GPIO inputs. Clickstart games now generally get to the title screen or main menu, other than Bob The Builder, which is missing some graphics. nw * v102: Add preliminary keyboard emulation * v102: Fix "multiple screens" error (nw) * spg2xx: Switched to scanline-based rendering, nw * spg2xx: Turn debugging features back off, nw * v102_kbd: More likely Caps Lock (nw) * nes_vt: APU improvements (#4476) * nes_vt: Add support for second APU and VT03 PCM * nes_vt: Add support for VT3x PCM in DGUN2573, etc * nes_vt_apu: Tidy up after rebase (nw) Signed-off-by: David Shah <dave@ds0.me> * nes_vt_apu: Add IRQ support Signed-off-by: David Shah <dave@ds0.me> * nes_vt_apu: Remove debug printing (nw) * nes_vt_apu: Fix indentation (nw) * knightsb : improved graphics [wonder199999] * Minor metadata updates of neogeo games (#4472) * Minor metadata updates of neogeo games Correct year, publisher/developer, Add notes, Related to title screen, staff roll, etc. AES release of razion is exists * neopcb.cpp : Minor spacing fix * neogeo.xml : Sync to neogeo.cpp metadata * srmp6.cpp : Updates Use buffered_spriteram16 for sprite ram, Use shorter type values, Fix namings, Add notes, Fix color fading, Minor corrections, Add save states, Reduce runtime tag lookups, Minor code style fixes, Simplified gfxdecode * galastrm.cpp : Device'fied TC0110PCR, Reduce duplicate, ACCESSING_BITs, Unnesessary Runtime tag lookups, handlers, pointers * Tidy constructor of ds12885 device (nw) * remove some MCFG macros that were barely used any more (nw) * Fix compile. (nw) * More c++ alignment. pstring now behaves like std::string. (nw) This change removes all string extensions like trim, rpad, left, right, ... from pstring and replaces them by function templates. This aligns a lot better with the intentions of the standard library. * sf2mdta : improved graphics [wonder199999] * Always call send_complete_cb, even if no adapter is present (nw) (#4477) * p8k: My mistake (nw) * (nw) cps3 : made some members protected to fix hbmame issue * (nw) fixed compile error in netlist. * (nw) timelimt : fixed hbmame problem * v102: Remove remnant (nw) * get rid of the rest of the digfx MCFG as well (nw) * Code maintenance and fix for "pure virtual call" error. (nw) * New working machine added ----------- Game & Watch: Lifeboat [algestam] * nes ppu: don't use float on cycles_to_attotime (nw) * hh_sm510: gnw_lboat directional controls are separate buttons (nw) * Use the same mcpx_isalpc device in both nforcepc and xbox (nw) Also use new smbus_logger device in nforcepc to log smbus accesses * capbowl: can't multiply attotime with float (nw) * Code maintenance. (nw) * Code maintenance and bug fixes. (nw) Rewrote and simplified tiny bits. Fixed inappropriate use of netlist_sig_t for non-boolean values. * fix MSVC (llvm toolset) compile (nw) - conditionally uninitialised variables in PortAudio; - floats passed to attotime; - unsigned->signed enums (this one is technically still wrong) * (nw) nforcepc : fixed validation error; added SHA1s. * ds5k133: Preliminary LANCE DMA hookup [R. Belmont] If you can parse this comment from the Linux driver, please help :) * The IOASIC LANCE devices use a shared memory region. This region * as seen from the CPU is (max) 128 kB long and has to be on an 128 kB * boundary. The LANCE sees this as a 64 kB long continuous memory * region. * * The LANCE's DMA address is used as an index in this buffer and DMA * takes place in bursts of eight 16-bit words which are packed into * four 32-bit words by the IOASIC. This leads to a strange padding: * 16 bytes of valid data followed by a 16 byte gap :-(. I get the first part, which is that since the DMA engine works in words and LANCE works in half-words that each half-word for LANCE is packed into one word from the CPU's point of view. The second part not so much. * add C++ standard library headers for things that are used (nw) * housekeeping (nw) * aic6250: silence logging * am9517a: silence logging * ncr5390: remove mcfg and unneeded read/write handler wrappers * interpro: use regular read/write handlers * next: de-mcfg ncr5390 * sun4: de-mcfg ncr5390 * neogeo_spr.cpp : Simplified xzoom checking, Reduce unnecessary line * devices/bus/neogeo/cmc.cpp, rom.cpp : Implement NVRAM Both jockeygp, vliner has battery-backed RAM, Correct this * snes: Fix crash when no cartridge has been loaded * (nw) nforcepc : suggestion of Haze; also fix typos while we're there * hh_sm510: found tinday model number (nw) * netlist wip: 7474, 7497, test driver * sblaster: DMA fixes for SB Pro and SB16 * Fix reported crash. (nw) * Fix reset order for nets. (nw) * mappy.cpp - Fix palette typo which corrects MAPPY title logo (nw) * (nw) fixed crash in sf2b * Fix clang build [-Wc++11-narrowing] (nw) This also adds an explicit type to the enum, so MSVC should be happy with this way as well. * Fix netlist logs. (nw) * Rewrote 7497 device. (nw) The 7497 device should now work as described in the TI datasheet. This datasheet contains an internal schematic with details on gates and D flip flops used. * smc91c9x: Refactor code. WIP. (nw) * hh_sm510: Added gnw_climber PCB label (nw) (#4489) * vii.cpp: new NOT WORKING Mattel Classic Sports [Sean Riddle] Dora the Explorer (JAKKS Pacific TV Game) [Sean Riddle] kludge handling of invalid size writes to DMA so that Dora the Explorer doesn't trash all of RAM + registers new SOFTWARE LIST JAKKS Pacific 'NK' Game Keys (Dora has corrupt gfx, probably the bad DMAs should do something, Mattel Classic Sports gives a black screen) xavix.cpp: new NOT WORKING e-kara Pro Headset (US, includes 3 songs) [Sean Riddle] Super Dash Ball (Japan) [Sean Riddle, Peter Wilhelmsen] Gururin World (Japan) [Sean Riddle, Peter Wilhelmsen] disable active raster interrupts if raster interrupt enable is turned off, and add preliminary shifter register emulation, needed for 3D stages in Gururin World [David Haywood] (Pro Headset works as well as other e-Kara stuff, marked as NOT WORKING due to lack of microphone and sound emulation issues, Super Dash Ball needs trackballs hooking up, Gururin World needs analog cycle looking up) rad_eu3a14.cpp: tied tilemap dimensions to tile sizes to improve Huntin'3 map screen [David Haywood] * hpc3: Silence debug logging, nw * new not working clones ------------------------------------------------------------- Moon Fire - Jackpot Carnival (30164211, Queensland) [Heihachi_73] Where's the Gold (20184811, Queensland) [Heihachi_73] aristmk6.cpp: added a bios set [Heihachi_73] * smc91c9x: Added initial MAC filter and fixed multicast address filtering. WIP. (nw) * -spg2xx: Various changes: [Ryan Holtz] * Adjusted UART receive behavior to flag an available byte only at the specified baud rate. * Added separate UART baud rate calculation for SPG24x vs. SPG28x. * Adjusted ADC behavior to flag an IRQ when the relevant data bit is set, not when register bit is newly set. * Added separate logging for FIQ registers. * Added logging for SIO registers. -clickstart: Added preliminary mouse hookup. Only accepts a mouse update once, ignores further updates. Needs further investigation. (nw) * promoted to WORKING : Super Dash Ball (Japan) [Sean Riddle, Peter Wilhelmsen, ShouTime, David Haywood] * uts20, uts10: Keyboard emulation and more - Add custom keyboard port and emulate most of the Expanded Typewriter Keyboard - Add unidirectional printer port - Use addressable latch devices to control various things, including disabling display during RAM test - Hack to pass non-volatile memory test on uts10 * Machines promoted to working -------- Fantastic Four (JAKKS Pacific TV Game) [David Haywood, Ryan Holtz] spg2xx: Fixed regression with Y-flipped tilemap tiles (nw) * Fun World Quiz: Switch manufacturer to Fun World. Out of WN... Oehlinger is not a company, just a guy inside Fun World that climbed to CEO of PhotoPlay. He left some strings with his last name in some programs and claims to be the CEO and owner of Funworld Ag... * Fixed tp1983 and 7497 and added 7497 dip version. (nw) The schematic for the tp1983 contains an error. R19 is connected to GND. This will never work since when Q goes low, the reset pulse will dead lock Q to low. R19 needs to be connected to VCC (5V). This will generate the proper, high-pass filtered pulse. Further fixes for the 7497 as well. * New working machines -------------------- WWE (JAKKS Pacific TV Game) [Sean Riddle, David Haywood, Ryan Holtz] spg2xx: Treat 0-length sprite DMA as 0x400 words. Fixes sprites in clikstrt bobbuild and jak_wwe. [Ryan Holtz] * uts_kbd/extw: Identify more function keys and layout options (nw) * midwayic: Make initial serial number random (nw) * srmp6.cpp : Add video reference * nile.cpp : Add save states (#4495) * ncr5390: various improvements (nw) DMA/DRQ handling is simplified and hopefully more correct. Tested working with mips, interpro and sun4. * added 16 bit dma for ncr53c94 * added reset atn command * refactored dma/drq code * avoid a hang in disconnected selection * mips1: magic number removal and more logging (nw) * mips: rx3230 scsi dma (nw) * Revert midwayic: Make initial serial number random. No linking for you! (nw) This reverts commit |
||
---|---|---|
3rdparty | ||
android-project | ||
artwork | ||
benchmarks | ||
bgfx | ||
ctrlr | ||
docs | ||
doxygen | ||
hash | ||
hlsl | ||
ini | ||
keymaps | ||
language | ||
plugins | ||
projects | ||
regtests | ||
roms | ||
samples | ||
scripts | ||
src | ||
tests | ||
web | ||
.appveyor.yml | ||
.drone.sec | ||
.drone.yml | ||
.gitattributes | ||
.gitignore | ||
.travis.yml | ||
COPYING | ||
dist.mak | ||
makefile | ||
README.md | ||
uismall.bdf |
MAME
Build status for tiny build only, containing just core parts of project:
OS/Compiler | Status |
---|---|
Linux GCC / OSX Clang | |
Windows MinGW | |
Windows MSVC |
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.