x64 MAME Cabinet - a new project :-D

Hi, and welcome to my latest pet project....a 64bit M.A.M.E. arcade cabinet page

Since DOSMAME was born, life has moved on and I sold my DOS arcade machine

Now it's time for another machine

So why not simply re-create the tried and tested MS-DOS based arcade machine that was so successful?



A few reasons to go 64bit;

MS-DOS MAME. source code hasn't been available for some time. This means I'm unable to compile MAME with the latest code. And as my ROM set is up to date, this will cause problems with loading certain games

64bit operating systems can utilize much more RAM due to the expanded memory space it can address

MAME. running on a 64bit operating system should run more modern games quicker

I like a change/challenge :-D

A bulky operating system is required (compared with MS-DOS)

Slower initial boot times from cold(compared with MS-DOS)

Cost - depending on with operating system you choose

Driver availability (XP x64)

Linux - complicated to use for the inexperienced user, but free (being a Yorkshireman, I like free)

Windows - easier to setup for the novice, but expensive

There are however couple of disadvantages to running 64 bit;Since MAME is open source, we have a choice of operating systems

My preferred choice is Linux. But I'll be starting with Windows XP 64bit, purely because I have the license. I also have no experience with connecting a 15khz standard resolution arcade monitor with J-PAC with Linux.



Once the cabinet hardware is tested and up and running, I plan to tear it all down and convert it to Crunchbang Linux x64

The Final Configuration

OK, after much testing of Windows XP, Windows 7, Ubuntu x86_64 and Fedora 14 x86_64, my final configuration choice is a compromize between functionality, ease of configuration and maintenance because;

XP is super easy to configure and troubleshoot

It's reasonably quick to boot - how I'm going to quantify this I don't know

It runs the display resolutions I need for MAME on a fixed frequency arcade monitor

I can get MameWah! to run as the desktop shell

I can hide the boot image, mouse cursor and desktop

Remote desktop and file sharing works well

I can run all the great MAME tools out there right on the cabinet VIA RDP, like the mame res tool, clrmame pro etc.

Windows XP services can be stripped out with minimal services running

MAME runs very well with no tearing or sound issues on my arcade monitor with CabMAME64

Vertical games display ok with a slight tweek with the vertical size pot

Motherboard - ASUS P5W

Intel® Quad-core CPU Ready

LGA775 socket for Intel Core2 Duo, Core2 Extreme

Intel 975X +Intel ICH7R 1333/1066/800MHz

Dual-channel DDR2 800/667/ 533 max 8GB

2 x PCI-E x 16 / 2 x PCI-E x 1/ 3 x PCI

Support ATI CrossFire graphics cards

Intel Matrix Storage technology

Dual Gigabit LAN

Dolby Master Studio technology

ASUS EZ-Backup

CPU - Intel Q6700 Quad Core

Launch Date Q3'07

Processor Number Q6700

4 Cores

4 Threads

2.66 GHz Clock Speed

8 MB L2 Cache

Bus/Core Ratio 10

FSB Speed 1066 MHz

FSB Parity No

Instruction Set 64-bit

Embedded Options Available No

Supplemental SKU No

Lithography 65 nm

Max TDP 105 W

VID Voltage Range 0.8500V-1.5V

Video Card - Saphire ATI HD4350 512Mb PCI-e

512MB of DDR2 memory

DirectX® 10.1 & PCI Express® 2.0 support

80 stream processing units

12x custom filter anti-aliasing (CFAA) and high performance anisotropic filtering

Dual mode ATI CrossFireX™ technology multi-GPU support for highly scalable performance

ATI Avivo™ HD video and display technology

Unified Video Decoder 2 (UVD 2) for Blu-ray™ and HD Video

DVD Upscaling & ? Dynamic power management with ATI PowerPlay™ technology

Built-in HDMI with 7.1 surround sound support

Donor Arcade Cabinet

1989 Capcom Final Fight

4 extra buttons per player

Standard JAMMA interface

Arcade Monitor - Wells Gardner 19W7602 (K7000)

Mainboard P447 CRT 19 inch diagonal size

400 pixels x 240 lines resolution Input RGB Analog, 1v to 5v 4.7kohm peak-to-peak Video Charaterisitcs

Bandwidth (-3db): 12MHz typical

Rise Time: <50 nano seconds Vertical Scan

Frequency 47 Hz to 63 Hz

+/-5% Horizontal Scan Width - 40 usec to 50 usec

Frequency - 15.1 khz to 16.8 khz

+/-5% Power 120VAC 50-60Hz, 85W max

PC to Arcade Cabinet Interface

Ultimarc J-PAC - this inteface performs 3 essentinal tasks; Prevents the PC graphics card from damaging the arcade monitor with high refresh frequencies normally used on a PC monitor Amplifies the standard VGA graphics card output to a voltage the arcade monitor can use Interfaces the joysticks, buttons, coin doors and audio circuits to the PC



Audio

Realistic Model 300 amplifier (thanks Freecycle)

Hard Disk

500Gb SATA disk partitioned as 20Gb Primary C: + 480Gb Primary M:

M:\ shared as \\arcade-machine\Mame

OS

Windows XP 64 Bit

XP x64 SP2

Catalyst 10.11 Radeon drivers

ASUS motherboard drivers

Software

Instant Sheller - used to modify the shell, boot screen and mouse - http://www.gameex.net/Community/InstantSheller/tabid/73/Default.aspx

Soft15Khz - used to modify the video timings to display windows on my 15Khz arcade monitor - http://community.arcadeinfo.de/showthread.php?t=9366

Quckres - allows windows to display sizes not allowed in the usual 'Display Settings' panel - http://www.dougknox.com/xp/utils/xp_quickres.htm

MameWah! - MAME game menu - http://mamewah.mameworld.info/

Cabmame64 - a version of MAME which has some arcade monitor tweeks - http://community.arcadeinfo.de/showthread.php?t=9555

MAME Compile tools - MAME compilation tools - http://mamedev.org/tools/

Software tweeks and settings

If you plan to kill the power to your arcade machine with a power switch, you must disable the disk policy 'Enable write caching on the disk' to prevent any disk writes getting corrupt

Windows XP shell set to MameWah!

Mouse set to a 1px cursor

No boot gui

No desktop background and set to black

No system sounds

No wireless for security reasons since I'll be disabling the firewall and not installing any AV

No printing

No themes

Share files so I can update it

Remote desktop for troubleshooting

Ethernet with static IP & NO default gateway

No internet

No anti-virus

No windows updates

After a default install and sorting out all the drivers



Add/remove programs, remove 'Windows Components'

Accesories

Internet Explorer

MSN Explorer

Networking Services 'Internet Gateway Device Discovery and Control Client'

Outlook Express

Windows Media Player

Windows Messenger



Power manager

Turn off screen saver

Disable power management



System properties

Adjust for best performance

Turn off system restore

Disable Automatic Updates

Startup and recovery

Uncheck all items

Remote

Uncheck allow remote assistance invitations to be sent from this computer

Check allow users to connect remotely to this computer

Add user

GREEN is set to MANUAL

is set to MANUAL RED is DISABLE

X Application Experience Lookup Service sc config "AeLookupSvc" start= disabled X Application Layer Gateway Service sc config "ALG" start= disabled X Automatic Updates sc config "wuauserv" start= disabled M Computer Browser sc config "Browser" start= demand M DHCP Client sc config "Dhcp" start= demand I use a static IP configuration M Distributed Link Tracking Client sc config "TrkWks" start= demand M DNS Client sc config "Dnscache" start= demand No DNS lookups required X Error Reporting Service sc config "ErSvc" start= disabled Disable once your system is up and running X Event Log sc config "Eventlog" start= disabled Disable once your system is up and running X Help and Support sc config "Helpsvc" start= disabled X Network Location Awareness (NLA) sc config "Nla" start= disabled X Performance Logs and Alerts sc config "SysmonLog" start= disabled X Print Spooler sc config "Spooler" start= disabled M Protected Storage sc config "ProtectedStorage" start= demand X Remote Registry sc config "RemoteRegistry" start= disabled M Secondary Logon sc config "seclogon" start= demand X Security Center sc config "wscsvc" start= disabled MAKE SURE YOU HAVE NO INTERNET ACCESS X SSDP Discovery Service sc config "SSDPSRV" start= disabled X System Restore Service sc config "srservice" start= disabled M Task Scheduler sc config "Schedule" start= demand M TCP/IP NetBIOS Helper sc config "LmHosts" start= demand X Themes sc config "Themes" start= disabled X Universal Plug and Play Device Host sc config "upnphost" start= disabled M WebClient sc config "WebClient" start= demand X Windows Firewall/Internet Connection Sharing (ICS) sc config "SharedAccess" start= disabled MAKE SURE YOU HAVE NO INTERNET ACCESS X Windows Image Acquisition (WIA) sc config "stisvc" start= disabled M Windows Management Instrumentation sc config "Winmgmt" start= demand X Windows Time sc config "W32Time" start= disabled X Wireless Configuration sc config "WZCSVC" start= disabled I have no wireless card installed

MAME

Services

Compiling MAME to match your specific CPU type can provide with some performance increases by optimizing the MAME binary, BUT it can introduce bugs too!

To compile MAME with an optimization, simply add the coresponding switch to the make command

make <CPU core option> <Advanced Processor Optimization Options>

<CPU core option> If you have a dual-core or quad-core processor, you can use the option -j3 or -j5, respectively, to significantly decrease your compiling time.



Advanced Processor Optimization Options

As of MAME 0.121u2, architecture flags for each CPU are no longer included in the stock makefile. You can specify them in an environment variable or command-line option to make called ARCHOPTS. Here are some useful options for a variety of IBM, Motorola and Intel CPUs. If you can think of any other options that would be useful to publish, post them in a reply to this thread.



There are two classes of options: "Maximum Tune" and "Just the Features".



"Maximum Tune" will tell the compiler about the features of the CPU, and also cause it to try to schedule instructions in such a way that the CPU pipelines are kept full. The CPUs that benefit most from this are the Intel Pentium 4, Motorola G4 7450 and IBM Cell (I know, there's no "Maximum Tune" option for this CPU yet). However, using "Maximum Tune" optimisation for x86 and x64 chips tends to bring out the bugs in GCC, so it isn't recommended for newer Intel CPUs. (Using "Maximum Tune" for PowerPC CPUs doesn't bring out the bugs - IBM and Apple have done a lot of work in this area.)



"Just the Features" will tell the compiler about optional features the CPU may have (additional FPU capabilities, vector unit, 64-bit, etc.) but won't tell it to perform scheduling optimisation. This may not be quite as fast, but it tends to be more reliable. These options are recommended for confirming bugs.



"Maximum Tune" options (i.e. architecture-specific optimisation and instruction scheduling tuning):



IBM G3 (750):

ARCHOPTS=-mcpu=G3



Motorola G4 (earlier - 7400, 7410, 7447, etc.):

ARCHOPTS=-mcpu=7400



Motorola G4 (later - 7450, etc.)

ARCHOPTS=-mcpu=7450



IBM G5 (970):

ARCHOPTS=-mcpu=G5



Intel Pentium 4 (earlier, no SSE3):

ARCHOPTS=-march=pentium4



Intel Pentium 4 (later, with SSE3):

ARCHOPTS=-march=prescott



Intel Pentium 4 (later, with 64-bit capability):

ARCHOPTS=-march=nocona



Intel Pentium M, Intel Core:

ARCHOPTS=-march=pentium-m



Intel Core 2:

ARCHOPTS="-march=pentium-m -msse3"



"Just the Features" options (take advantage of CPU features, but don't do fancy scheduling tricks):



IBM G3 (750):

ARCHOPTS="-mpowerpc -mpowerpc-gfxopt"



Motorola G4 (7400, 7410, 7447, 7450, etc.):

ARCHOPTS="-mpowerpc -mpowerpc-gfxopt -maltivec"



IBM G5 (970), IBM Cell (PlayStation 3), IBM POWER5:

ARCHOPTS="-mpowerpc64 -mpowerpc-gfxopt -mpowerpc-gpopt -maltivec"



Intel Pentium 4 (earlier, no SSE3), Intel Pentium M, Intel Core:

ARCHOPTS=-msse2



Intel Pentium 4 (later, with SSE3), Intel Core 2:

ARCHOPTS=-msse3

Block Diagram