I did not create these patches. I am simply hosting them all together in one easy package, including binaries that I compiled. Video related patches pertain to Windows. All other patches are operating system agnostic. The guide is oriented towards Arch Linux and Mac OS X.
MAME License is included in this repository, and can be found here. It must be included with the binary.
This also happens with upstream GENie, and I've found the problem. Mojave, as you may know, is Snow Leopard 2: Electric Boogaloo. Except instead of stripping PowerPC from everything it strips 32-bit i686 from everything. Part of this is that you can no longer build targeting pre-Snow Leopard OSes, and GENie attempts to maintain functionality all the way back to Tiger.
I'm testing a fix now, if I can do a full MAME build with it I'll poke GENie upstream and submit to MAME's git.
Here's the change: github link
Mojave [10.14] removed the ability to build 32-bit and so the minimum target OS available bumped up from Tiger [10.4] to Snow Leopard [10.6]. This should work all the way back to Snow Leopard [10.6], compiler permitting.
D3D8 fix is added solution for bypassing message "non-power-of-two textures" for old DX8 video cards.
Groovy MAME 0.170 under Windows 7 can use Direct Draw, Direct 3-D 9 and Direct 3-D 9 Ex, being the latter the recommended API. Notice that Direct Draw stopped being supported by MAME in version 0.171, whereas Direct 3-D 9 Ex only is supported by Groovy MAME 0.167 onwards.
The advantage of Direct 3-D 9 Ex over Direct 3-D 9 is that, unlike with the latter, there's no need to enable frame delay in order to force the frame latency to the minimum allowed by the driver and therefore avoid the dreaded frame queues present in the ATI video drivers when Direct 3-D is used, which add a lag of 2-3 frames.
The official MAME has "skip_gameinfo" feature built in. It will skip the game info screen. The suppression patch, also known as nonag, will also remove the compatibility/disclaimer warning screen when used with the previously mentioned option. Using a binary with this patch applied is not recommended when reporting bugs or issues.
based on official sources plus extra modifications imported from ARCADE http://arcade.mameworld.info (new derrative based on MAMEUIFX) and no nag patch. Some of those changes created by me.
These modifications are current for the MAME 0.211 patch.
Video modifications:
- hack for fixing sprites in neogeo driver (at the moment title screen in sengoku2 is a bit broken)
- removed custom position and size in astrocde and cidelsa drivers (looks very bad on TV/Arcade monitor)
- restored resolution 256x240 (from 240x240) in remaining games in btime driver as well in scregg driver
- video fix for Metamorpic Force (proper offsets)
- small colours fix in nemesis driver (games have now slightly more brighter picture, seems to be more accurate)
- visible area modifications in in ssv driver (changed Air Blade; Dyna Gear)
- visible area modifications for many games in neogeo driver (mostly from 320x224 to 304x224 but for four games even to 288x224 - Zed Blade, Goal!Goal!Goal!, Gururin, Zupapa)
- visible area modification for X-Men,
- visible area modification Super Contra, Gang Busters, Thunder Cross, Teenage Mutant Hero Turtles, Bells'n'Whistles [not in ARCADE32/64]
- visible area modification for Battle Rangers, Double Dragon, Double Dragon II, Thunder Strike, China Gate, Garyo Retsuden [not in ARCADE32/64]
- visible area modification for Express Raider, Exzisus, Liberation, Nova 2001, Rock'n'Rage, Riot City, Wonder Boy 3, Aurail [not in ARCADE32/64]
- visible area modification for Mad Crasher, Gladiator 1984, Super Cross II, Jungle King, Sea Fighter Poseidon, Xain'n Sleena [not in ARCADE32/64]
- visible area modification for many games in namcona1 driver [not in ARCADE32/64]
- visible area modification for many games in system1 driver [not in ARCADE32/64]
- some video fixes in taito_f3 driver (continue screen in Greed Seeker is now visible, the same goes to intro text in Arabian Nights)
Misc modifications:
- slow rendering fix for namconb1
- more accurate video timings in Green Beret
- swapped some IRQ handling in megasys1 driver
- OS X Min 10.6 (required to compile mame 0.202 on Mac OS X 10.14+)
- GroovyMame
- Video mode
- d3d8 (windows, old video card compatibility)
- d3d9ex (windows vista and later, for less video lag)
- Suppression
- Various Fixes
We do not want to loose our patched kernel for 15khz.
sudo nano /etc/pacman.conf
#IgnorePkg =
toIgnorePkg = linux
line 25- Save the buffer (ctrl+o).
- Exit nano (ctrl+x).
sudo pacman -Syu
sudo pacman -S unzip
sudo pacman -S base-devel git sdl2 gconf sdl2_ttf gcc qt5
It is not required to install the complete xcode package for the command line developer tools.
xcode-select --install
- A software update popup window will appear that asks: "The xcode-select command requires the command line developer tools. Would you like to install the tools now?". Click "Install", then agree to the Terms of Service when requested.
cd ~/
curl -O http://libsdl.org/release/SDL2-2.0.9.dmg && hdiutil attach SDL2-2.0.9.dmg
2.0.4+ required, take note of disk name from outputsudo cp -R SDL2/SDL2.framework /Library/Frameworks/SDL2.framework
hdiutil detach /dev/disk1s2
use disk name from step 4
I have had issues patching with files within mame source and patches having different line endings. It's best to make sure all line endings are uniform before patching. Must follow Install Dependancies Required to Compile MAME section first.
cd ~/
curl -L -o endlines-1.9.2.zip https://github.com/mdolidon/endlines/releases/tag/1.9.2 && unzip endlines-1.9.2.zip
cd endlines-1.9.2
make
make test
sudo make install
substitute version number accordingly
- Download MAME Source
cd ~/
sudo curl -O -L https://github.com/mamedev/mame/releases/download/mame0211/mame0211s.zip && unzip mame0211s.zip && unzip mame.zip -d mame0211
rm mame.zip
- Download Patches
cd mame0211
curl -O https://raw.githubusercontent.com/keilmillerjr/mame-diffs/master/mame0211/groovymame_017n.diff
curl -O https://raw.githubusercontent.com/keilmillerjr/mame-diffs/master/mame0211/suppression.diff
curl -O https://raw.githubusercontent.com/keilmillerjr/mame-diffs/master/mame0211/various_fixes.diff
cd ~/mame0211
endlines check -r *
endlines unix -kr *
cd ~/mame0211
patch -p0 -E < groovymame_017n.diff
patch -p0 -E < suppression.diff
patch -p0 -E < various_fixes.diff
If you get cc1plus: all warnings being treated as errors
output while compiling, you can suppress these warning errors.
cd ~/mame0211
nano makefile
- Change line 17:
# NOWERROR
to:NOWERROR
- Save the buffer (ctrl+o).
- Exit nano (ctrl+x).
make
cd ~/mame0211
- You can use
make
without any flags, or speed things up with the Parrallen Execultion (multi-processing) jobs flag. Each job can take up to 1GB to 1.5GB of RAM. Lower this value if LogicalCores>=RAM.- Linux:
make -j$(nproc)
- Mac OS X:
make -j$(sysctl -n hw.logicalcpu)
- Linux:
Precompiled Binaries have the following patches applied:
Patch | Linux | Mac OS X |
---|---|---|
GroovyMAME | yes | no |
Suppression | yes | yes |
Various Fixes | yes | yes |
sudo pacman -S unzip
cd ~/
curl -O https://github.com/keilmillerjr/mame-diffs/blob/master/mame0211/mame64_linux.zip && unzip mame64_linux.zip
Please be sure you use endlines to make sure all patches are converted to unix.
cd ~/mame-diffs
endlines unix -kr *
Please be sure that the binary is not mixed up with any other version, and is in the appropriate versioned subdirectory.
Install zip package: sudo pacman -S zip
cd ~/mame0211
zip mame64_linux.zip mame64
linux/mac
This can simplify transfering out of a virtual operating system install. Connect and unmount disk in host operating system. In virtualbox, click on your session and then Settings -> Ports -> USB -> USB Device Filters -> + -> your usb device. During an active session, click on the USB symbol and select your usb device.
substitute device path accordingly
lsusb
sudo fdisk -l
sudo mkdir /media/usb_drive
sudo mount /dev/sdb1 /media/usb_drive
cd ~/mame0211
mkdir /media/usb_drive/mame0211
cp mame64_linux.zip /media/usb_drive/mame0211/mame64_linux.zip
sudo umount /media/usb_drive