CCPMAME - A Computer Controlled Interface for MAME
Download: mameacpatch-0.3.3145.tar.gz (works with MAME version 0.145)
- What is this useful for?
- Machine learning. This gives you a uniform interface to thousands
of human-level challenges
- You want to program intelligent opponents
- You want to program intelligent allies
- You want to see random flailing in various games (comes
pre-packaged :)
Here you can find information and source code that can help an
agent/program talk to MAME. An agent using the interface gets the
current image being displayed, (possibly) the current score, and is
meant to send back the state of the buttons when polled for
them. This patch was originally designed to be used as a
reinforcement learning framework, but it can be used in any case a
computer controlled character is desired (eg code your own opponents
in a fighting game, write a companion for a two person shooter). A
C interface is available, and python bindings to that interface are
also provided.
The patch with respect to MAME 0.145 can be downloaded
by clicking here (v0.3.3145 - last
updated 2012/02/13). All code is released under the BSD license. I
will try to keep the patch up-to-date with the latest MAME release,
but the patch will most likely apply cleanly, or clean for all
practical purposes, against a few versions either side of the intended
target since the code only modifies MAME in very few places.
MAME can be obtained from
http://mamedev.org/release.html
The patch makes a negligible impact on running speed when an automatic
controller is not enabled so it is usable as your main MAME binary.
Read the README file included to learn more (including patching
instructions). Read the HOWTO if you want to know how to use the interface
An alternative to this patch is provided by Bryan Ischo with libmame at http://www.ischo.com/libmame/. The intent is a bit different but it can also be used for controlling a character programmatically.
History
- 2012-02-13 - v0.3.3145(download)
-
- Update diff to work on MAME 0145
- 2012-02-05 - v0.3.2144(download)
-
- Examples/templates are documented better
- Python bindings slightly faster, especially for larger buffer sizes
- Can specify None for unwanted methods in Python bindings.
- 2012-01-23 - v0.3.1144(download)
-
- Get rid of installac.py
- Add installscores makefile target
- 2012-01-22 - v0.3.0144(download)
-
- Move over to main MAME distribution, since SDLMAME has been folded in
- Update diff to Mame 0.144
- Get rid of python dependency
- 2010-01-10 - v0.2.3136(download)
-
- Update diff to SDLMame 0.136
- 2009-09-27 - v0.2.3134(download)
-
- Update diff to SDLMame 0.134
- 2009-04-11 - v0.2.3130
-
- Update diff to SDLMame 0.130
- 2009-03-09 - v0.2.3129 (download)
-
- Update diff to SDLMame 0.129
- 2007-07-22 - v0.2.2
-
- Keys are no longer hard-wired. Interface now extracts them from MAME.
- Add high score retrieval for puckmana.
- Clean up makefile a bit more.
- Add a small install script to copy 'scores.dat' to somewhere
findable. 'make installac' will run it.
- Big internal changes. As a side effect, AC's start function is
now called just before the first frame is sent to it.
- 2007-07-16 - v0.2.1
-
- Update diff to SDLMame 0.117
- Clean up the makefile a bit.
- Get rid of warnings in ac code.
- 2007-07-15 - v0.2.0
-
- Ported to SDLMame due to XMAME activity having nearly ceased. In
the process, moved patch from the OSD layer down into the MAME core
(no SDL code is touched), so this patch should be portable to other
operating systems without too much hassle (dynamic loading would be
the main obstacle).
- More and better documentation
- Should work with all bit-depths now.
- Can play as player two.
- No need to specify full path of library any more.
- 2006-04-23 - v0.1.4
-
- Update diff to be in sync with XMAME 0.105
- 2006-02-28 - v0.1.3
-
- Update diff to be in sync with XMAME 0.104
- 2006-01-28 - v0.1.2
-
- Update diff to be in sync with XMAME 0.103
- 2005-12-29 - v0.1.1
-
- Update diff to be in sync with XMAME 0.102
- 2005-11-08 - v0.1
-
- Add 15 bit depth games (same code, just had to check it)
- Got rid of portage dependency in acutils.py
- Added dummy.py as sample python template
- 2005-10-29 - v0.0.3
-
- Split package into framework and agents. Only release python
bindings and shell python agent (rest are really not related)
- Add TODO file
- 2005-08-10 - v0.0.2
-
- Major restructuring. Separate XMAME interface
from implementation so that there's no need to recompile
XMAME when updating a controller. Controller modules are
now loaded at runtime. Now python binding is just a
loadable module.
- 2005-08-02 - v0.0.1
-
Mail comments, information,
corrections, patches to Alejandro Dubrovsky <alito@organicrobot.com>
For those interested, more information on what MAME is and the design of the interface can be
found in this report (last updated July
2005) (Note: StarROMs is no longer in business as of February 2006).
Thanks go to Dr Marcus Gallagher for comments and ideas, and for
creating the incentive for the existence of the report.