1. Game
  2. Exploring MAME history for TG rules

View this page's RSS feed
Why the guide and confusion
Twin Galaxies rules work on a "fair playing level" basis and the version of MAME with the ROM set should match the experience the rules were intended to utilise. The MAME team are in no way affiliated with Twin Galaxies and their great efforts are not shaped by Twin Galaxies (and should not be). Thus, the MAME team may make changes to MAME that affect Twin Galaxies member's use of MAME without any notification or knowledge being given to Twin Galaxies.

With regard to the rules of Twin Galaxies tracks, this maps out to understanding when the track was created, what version of MAME is intended by the rules at the time they were created, then understanding the ROM title, ROM sets and DIP switches that are documented both in that version and how MAME has developed since that version.

Track Legacy
In order to create the view of the tracks and how they should be interpreted into the newer versions of MAME, it is necessary to understand the track legacy, identify the version of MAME the track was intended for and then proceed from that understanding through the newer history of MAME.

Track Legacy: Founder
To begin this research process, first look at the Founder of the track - all tracks on the scoreboard are represented by Founders. For all legacy tracks, there will be a single Founder represented and be listed as Twin Galaxies. Since 2015, new tracks could be created by Twin Galaxies members and the creator and sponsors of the track will be listed as the Founders.

Track Legacy: The Intended MAME Version
Next we have to understand the version of MAME that the rules were intended for.

Priority #1: If the rules of the track specify the version of MAME (or permitted version(s) of MAME) then that is the basis for the next step of the research.

If the track has a Founder of Twin Galaxies and the rules do not indicate a version of MAME, then version 0.106 should be assumed. This is a legacy ruling from the pre-TGSAP era: all MAME submissions must use 0.106 except where specified in the rules.

If the rules do not specify a version of MAME and the Founder is not Twin Galaxies, look for the oldest submission by one of the Founders. The version used in such a submission should be assumed as the intended version of the track.

Lastly, if there is no rule, Twin Galaxies is not the founder and there is no sample submission from the Founder(s) to base on, check the date of the track was created. When tracks are created, the original thread is stored in the Community Founded Tracks Forum: https://www.twingalaxies.com/forumdi...Founded-Tracks .

Track Legacy: The Intended ROM Version
Usually, this will be specified explicitly in the rules or there will be some verbiage to indicate how to interpret the rules. If the ROM set is not given at all, what ROM sets were available to the intended version? If the Founder was Twin Galaxies, the parent ROM set was primarily used. For any other circumstance this guide cannot resolve the problem - seek help from the community or the Founder(s) of the track.

MAME History
The MAME development is open source and the developers keep a log of their activity as the development continues. This is a huge resource and will take a lot of time to dig through. Thankfully, there are many side-projects which provide information and one such project is the MASH's MAMEInfo project which extracts and condenses the changes into a single text file. The file is intended to be used by versions of MAME which support the MAMEINFO.DAT file but the file can also be easily read with a standard text editor (though warning: the file is big and Notepad may not like it!).

MASH's MAMEInfo: https://mameinfo.mameworld.info/

MAME History: Dating MAME
Even if you have a specific version of MAME intended, you still need to know a start date to begin the search through the ROM set information as only entries after the release of the version are relevant to the track rules interpretation.

Near the top of the MAMEINFO.DAT file are a list of release dates for the various versions of MAME:
- If you have a specific intended version, locate the release date for that version.
- If looking for a MAME version which matches a given date range (i.e., the track creation date), locate the version of MAME which is on or before the date [of the track creation]. This identifies both the likely-intended version of MAME and its release date.

MAME History: Searching Through MAMEINFO.DAT
The information stored in MAMEINO.DAT is based on the ROM set of MAME or the source file which was adjusted in the development files. If you have a version of MAME which can show the information, load it up and locate that ROM set to display the relevant section of the file. For text editor use, search the file for the ROM set prefixed with $info= . So, for example, to find the puckman entry, search for:

$info=puckman

There will be times when there are multiple similar-named entries but only settle for the entry which is an exact match for the ROM set you being sought.

The only sub-section needed from here is the "WIP:" entries.

Piecing It Together
By now, the relevant information at hand should be: the version of MAME intended, the release date of the version of MAME intended, the ROM set intended and the entry in MAMEINFO.DAT which corresponds to the ROM set.

In this ROM set's WIP section of MAMEINFO.DAT will be summary development logs which affected the ROM set. They were written by a variety of people and so may not follow a common format. The entries are written in reverse-chronological order: locate the entry which is nearest to (on or after) the version of MAME and read up the list of entries to understand the history of what happened during MAME's development.

Still not complete?
Another entry that will need to be reviewed from the MAMEINFO.DAT is the source code entry which represents developer notes that may affect a suite of games but not by name. Use the -listsource parameter to mame to discover which source file the game is represented by. For example, for pacman from MAME 0.250 the result is:

> mame.exe -listsource pacman
Code:
pacman           pacman/pacman.cpp


In this circumstance, the MAMEINFO.DAT entry being sought would be:

$info=pacman.cpp

These entries tend to be more developer-centric and may need further understanding if you're not a C/C++ programmer or MAME developer but can hide-in-plain site things which have a wide-ranging impact. For example, in the $info=neogeo.c entry is this seemingly innocuous entry (thankfully, lightweight impact):

- 0.150: Endian fix for kof2003 protection (machine\neocrypt.c and neoprot.c). Fixed NeoGeo memory leak, clean up inputs a bit [Alex Jackson]. Changed 'Test Switch' dipswitch to 'Service Mode'.

The final sentence is the one which has the potential impact to those not readily used to interpretting rules: in the 150+ different games on the NeoGeo, if a rule stipulates only "Test Switch" or only "Service Mode" then submissions using an older or newer version of MAME (compared with rules) may inadvertently ignore the setting because it isn't expliclty labelled in their version of MAME as stipulated by the rules.

Lastly
Test, test, test and test again. Be certain that a change has occurred: MAME devs are human, TG participants are human & things get documented which didn't actually happen and other things happen which go undocumented. Design a test to understand your findings and confirm.
Join us