Ultimate
MAME 0.144u1
The main official complaint with regards my previous ‘UltimateMAME’ proof of concept seemed to be the merging of everything into the single
MAME tree. While I personally consider this an advantage (less places to look = less confusion) sometimes compromises have to be made in order to get things accepted officially.
Therefore, I present, based on the current codebase, a new proof of concept.
This, instead of combining the folders , adds a new build target to the system ‘complete’
The basic changes are still very simple, the mame.mak / mess.mak files have been reorganized a little to support what I’m doing, a simple tool has been created to merge .lst files to a final .lst file (right now it just joins the files, but additional validity checks could be added)
To support this the shared systems between
MAME and
MESS (where retail console units were used as the base for
arcade machines) have been put in their own shared.lst to avoid conflicts, and an additional set of rules have been added to the makefiles to build the correct .lst for each target.
This, if accepted (and there really is no good reason it shouldn’t be, the base changes are legitimate and useful progress regardless) will reduce the actual number of files needed to create a combined build down to 2. The ‘complete.mak’ and ‘complete.c’ in the ‘complete’ folder. Therefore, even if a decision to not include those 2 specific files is taken it will be a LOT easier to maintain externally anyway.
From the point of view of
Mamedev this allows the projects to maintain their individual identity, and keep the folder separation.
From the point of view, or somebody working on cross-project drivers it gives the option to build a single combined binary as a target. As an added bonus, if you have a single ‘Complete.exe’ binary built, and want the individual MAME.exe or MESS.exe out of it then everything you need is already built, so changing the target in the makefile will give you the split build in a matter of seconds, no need for a new rebuild!
For people who don’t care about having a combined binary this is a 0 impact change, absolutely nothing about the project work flow changes, and the combined target can happily be ignored. By default MAME.exe / MESS.exe will be built, you have to specify that you want a combined binary.
This is in essence win-win for everybody.
—-
Binaries / Source stuff
The following
MAME/
MESS sync positions were used:
http://git.redump.net/mame/commit/?id=72c99a93fb4102fe870562eeaf31ae49cfb4dc6d
http://git.redump.net/mess/commit/?id=9983e6ed75e51c8974318b3706853b6c5da63a5e
Both being slightly newer than 0.144u1 on the ‘Better error handling for softlists’ change.
After combining those sources, the following diff was applied to update the build system as I describe above.
That still leaves the default build target in the makefile as ‘
mame’ change it to ‘combined’ to get the combined build.
Combined Source here
64-bit Binary here
32-bit Binary here
I’ve still had some issues building the tools, but it should be possible to resolve those quite easily, it just wasn’t necessary for this 2nd proof of concept, which was targeted at resolving the issues
MameDev had with the first patch.
–
Fingers crossed that the basics of this will actually be accepted, I can’t think of any legitimate reasons why it wouldn’t be, but you never know with
Mamedev these days…
Given that I’ve called the build target ‘Complete’ (which is a better description of it) and the exe is therefore complete.exe maybe I should call any future builds produced like this ‘MameComplete’ as they represent a more complete
Mame build than the baseline. The current name was just really based on the most complete version of Windows being the ‘Ultimate’ editions