Windows 10 Arcade Cab Install

[ ]

If you have a PC-based arcade cabinet then the best overall OS is almost certainly going to be Batocera. It supports pretty much every retro emulator available, including a number of niche and Windows-only emulators. However, there are some edge cases where Windows is useful. See this post which suggests a sensible way of dual booting both.

Setting up Windows direct on an arcade cabinet is a pain. This post covers the steps to do so on another machine using Virtualbox before writing the resulting image to a real hard disk. It includes steps for installing all of the various runtimes Windows needs to run the widest possible range of games and emulators.

This process was carried out on Ubuntu but the steps can be easily adapted for any other host OS.

Requirements

Create the VM

sudo apt install virtualbox-7.0 qemu-utils

Update Windows

Run the Windows updater (type update in the Start Menu search bar to find) as many times as needed until it reports no updates are available. Several reboot cycles will probably be needed.

Note that this will have to be done again on the cabinet in order to get any motherboard drivers. It will be relatively quick if the drivers are the only updates left.

If you get an update which fails with error 0x80070643, ignore it. It means that the recovery partition (the one Windows itself creates!) is not big enough to store the update files it needs to update itself. We’ll get rid of the recovery partition later.

Create a shared folder

Without the Virtualbox extensions it isn’t possible to create a shared drive in the VM. However, you can share a folder on the VM’s hard disk as normal. This allows files to be transferred between the host machine and the VM.

You can get the VM’s IP address by right clicking the Network icon on the right hand side of the task bar, selecting Open Network & Internet Settings, click Status and then Properties. Scroll down to see the IP.

Within pretty much any desktop file manager, you can set the address for the share. Assuming your user account is called arcade and the IP address of the VM is 192.168.0.63, this would be:

smb://arcade@192.168.0.63

Depending on which precise version of Windows you have and the phase of the moon, you may be presented with access to just the shared folder created above or the whole user folder.

Making this possible/painless is why we created a local user account and set the VM’s network to bridged mode.

Install software

Within the VM, install the following software. You can get the installers onto the VM either using the network share created above or by downloading them direct using the browser in the VM:

Add older .NET versions

Download GPU drivers

If you have a dedicated GPU download the drivers and store them somewhere in the C: drive. You may be able to install them in the VM but with the Nvidia drivers at least, it needs to be able to see the GPU to work.

Other software

Where possible, it’s easier to install any games, emulators or other tools you want to use in the VM, especially if accounts need setting up or other configuration is necessary.

I also installed:

Controller drivers

Additional software may be needed to configure the arcade cabinet’s controllers. I have an Arcade Legends Ultimate cabinet and I needed to install:

Arcade frontend

There are several frontends available for Windows. I opted for RetroBat. I also installed RocketLauncher in case it turned out to be needed.

Start programs on boot

Most programs which can/must start when Windows boots up either set this automatically or have an option to do so. The only one I needed to setup manually was my own program for handling the Arcade Legends control deck.

Apply Winaero Tweaks

Save the following as tweaks.ini and import into Winaero Tweaks using its import options:

[Format]
ProductName=Winaero Tweaker
ProductVersion=1.62.1.0
FormatVersion=1.1
[User]
pageChrEdgeDisableDesktopShortcut=1
pageDisableLockScreen=1
pageEnableUsersMustEnterNameCheckbox=1
pageDisableCopilot=1
pageControlPanelPersonalization=1
pageContextMenuPersonalizationMenu=1
pageDisableCortana=1
pageUAC=1
[pageDisableCopilot]
IsCopilotButtonDisabled=1
IsCopilotDisabled=1
[pageControlPanelPersonalization]
Classic=1
Wallpaper=1

Enable automatic login

With the ability to enable automatic login enabled, run netplwiz and untick the box which requires a password to log in.

Writing the hard disk image to disk

Once you are happy with your installation, close the VM.

In a terminal, cd to the directory with the VM’s .vhd file and run the following, changing the name of the input and output files as required:

qemu-img convert -f vpc -O raw "Windows 10 Arcade.vhd" win10_arcade.img

Attach the target hard disk to the host machine. Assuming it is at /dev/sda the image can be written with the following command:

sudo dd if=./win10_arcade.img of=/dev/sda bs=4M status=progress

Cabinet installation

Attach the hard disk to the cabinet’s motherboard as normal. Ensure it is set to boot in the BIOS settings or follow the link at the top of this post for instructions on setting up GRUB to do so.

Once booted in Windows:

There may be other things which require Windows to be able to see the real hardware, depending on what you’ve installed. I couldn’t get RetroBat to start until I had the disk installed in the cabinet and GPU drivers installed/a decent resolution available.