Windows 10 Arcade Cab Install
27 Apr 2025 [linux
emulation
batocera
windows
]
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
- A Windows 10 ISO
- A SATA/USB adapter or another way of attaching the target disk to the machine used to create the VM
- An OEM product key (Google it)s
Create the VM
- Install virtualbox and the qemu tools (used for converting the resulting hard disk image to writable format). You may need to change the virtualbox version
sudo apt install virtualbox-7.0 qemu-utils
- Create a new virtual machine using VirtualBox and install Windows:
- Create a dynamic virtual hard disk in VHD format with a size of 100GB. This enables it to be written to any disk of 128GB or bigger.
- Do not activate Windows either during installation or when using the VM. If you do, the product key will be tied to the VM and assuming you haven’t paid for a full price retail copy (OEM product keys are a 10th of the price), Windows will declare itself unactivated as soon as it’s run in the cabinet.
- Do not create or log in with a Microsoft Account. Using RDP, SSH, SMB and more are harder if you do. Also, you want to be able to enable automatic login later.
- Changed the network adapter mode to bridged in the VM settings.
- Do not install the Virtualbox extensions. This means you’ll have to work with a small resolution screen while setting up the VM.
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.
- Create a new folder in
Documents
- Right click and select
Properties
- Click on the
Sharing
tab - Click on the
Share
button. If you’re asked to enable file and printer sharing, do so. - In the dialog which appears the current user should already be listed as able to access the share.
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:
- WinRar
- The Visual C++ all-in-one redistributable. This should have everything and is updated regularly but the individual versions can be downloaded direct from Microsoft if needed.
- DirectX runtimes up to June 2010
- The legacy Nvidia PhysX runtime. Install this irrespective of whether you have an Nvida GPU.
- Winaero Tweaker
Add older .NET versions
- In the Start Menu search bar enter
optional features
and open theManage optional features
settings pane. - Within the settings pane, scroll down to ‘Related settings’ and click on the
More Windows features
option. - In the new dialog, ensure that
.NET Framework 3.5 (includes .NET 2.0 and 3.0)
.NET Framework 4.8 Advanced Services
are selected. - You may also want to turn on
Services for NFS
andSMB 1.0/CIFS File Sharing Support
depending on which devices you want to connect to from the cabinet. That said, in almost all cases when interacting with the cabinet it’s easier to connect to it than from it.
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:
- Sublime Text
- AntiMicroX. This is primarily for translating game controller inputs to keyboard presses for games which don’t support gamepads but it’s also very useful for testing attached controller devices.
- The software to configure my 12 key mini-keyboard, which I have attached to the side of the cabinet. This provides some extra buttons and a couple of dials which are useful when game controllers aren’t enough for interacting with Windows.
- The Gun4IR UI to enable configuration of my Gun4IR light guns.
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:
- The latest (last ever) version of ViGEmBus.
- A small program I wrote which uses ViGEmBus to present the cabinet’s two game controllers as Xbox 360/DualShock 4 controllers. Without this, Windows could see the controllers but they were not usable in any software I tried.
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.
- Open the location of the program’s .exe file in Windows Explorer.
- Enter
run
in the Start Menu search box and hit Enter. - Enter
shell:startup
and hit Enter. This will open the startup directory in Windows Explorer. - Right click on the program
.exe
file in the first Explorer window. - Right click in empty space in the startup directory Explorer windows and select
Paste shortcut
. - Rename the shortcut if desired.
- Right click on the shortcut and click
Properties
. - In the options box which appears, select
Minimised
in theRun
dropdown. - Add any required command line options in the
Target
box.
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:
- Run Windows update again, this time choosing the optional updates option and selecting any relating to hardware you have (or just select all of them). It may take a few reboot cycles.
- Install the GPU drivers.
- Activate Windows. There are plenty of places online which sell OEM product key very cheaply.
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.