Posted November 28, 2022 by curifab
Warning: tech talk. Read this if you want to create your own cabinets, if not, just download the cabinets assets packs.
Cabinets have two parts:
Obviously, you can download all the cabinets that you want because their are distributed as game assets
Note: You don’t need to be a programmer or a graphics designer to make new cabinets assets starting of a base model.
Creating new cabinets is a trial-and-error process. There is a special room in the game called the Workshop where you can test your own cabinets.
You can upload the cabinet you’re working on as many times as you want to the workshop. When you are satisfied with the outcome, you can place the cabinet in the game. The cabinet will be automatically installed in a room by the game.
The best way to make a new cabinet asset for a game is to copy an existing one, decompressing galaga.zip
for example, and replace each file for the one that correspond to the game. It’s important to use the same characteristic for each file, for example the width and eight for the side art graphics and the same rotation.
The special file description.yaml
describes the parts of the cabinet.
Detailed instructions at the end of this post.
This is an example of the Cabinet Description Language (CDL) in the description.yaml
in galaxian.zip
, a text file describing a cabinet in a computer language known as YAML
(this is the simplest way to communicate with a computer system).
name: galaxian
rom: galaxian.zip
crt:
type: 19i
orientation: vertical
screen:
damage: low
invertx: false
inverty: true
style: galaga
material: black
year: 1979
coinslot: coin-slot-double
timetoload: 5
video:
file: video.mkv
parts:
- name: left
art:
file: left.png
- name: right
art:
file: right.png
- name: joystick
art:
file: joystick.png
inverty: true
- name: joystick-down
art:
file: joystick-down.png
- name: front
art:
file: front.png
- name: bezel
type: bezel
art:
file: bezel.png
- name: marquee
type: marquee
art:
file: marquee.png
color:
r: 238
g: 232
b: 176
intensity: -2
You can use CDL
to describe all of the design details of each part of a cabinet model simply by using a text editor on your computer.
Once you understand the language, it’s easy to develop new cabinets.
A detailed description in the documentation page
Once your cabinet is complete, you can begin testing it. Normally, it should not work; some adjustments may be required, this happens a lot.
There are a special room the workshop where you can see and test the new cabinet. To deploy the cabinet there name it test.zip
and copy to the /sdcard/Android/data/com.curif.AgeOfJoy/cabinets
folder (as usual, but with that special name). AGE of Joy will reload the cabinet immediately (this only happens in the workshop with that cabinet, but not in the rest of the rooms). Repeat the process until you are confident with the result.
At the end, rename the final cabinet with a unique name, two different cabinets can’t have the same name. As a rule, I use the name of the ROM as the name of the cabinet, so your cabinet will be unique in the gallery and in the cabinet assets universe too.
You can, of course, publish your cabinet.
This is a step by step guide to craft a new cabinet for a ROM.
In this example, we will use the Galaga cabinet to craft a new Galaxian cabinet for the Galaxian ROM
In theory any ROM that works in Libretro MAME 2003+ should work, BUT there are some issues that must be managed in AGE of Joy to use some ROMs. One of them, for example, is the image format because not all ROMS uses the same image format, and if you ROM uses one that is not supported, then the game don’t run or may show weird colors, lost frames, etc.
If you can’t find a cabinet for your rom you should create a new one.
This method uses a previously saved model (bundled in the game) and reuse it. Starting with a cabinet asset and modifying it. A good start point is the Galaga cabinet, in this example we will modify the cabinet and we will create a new one.
galaxian
galaga.zip
and extract all the files to your new folder galaxian
. Warning: its easy to confuse a cabinet asset with a ROM, usually the have the same file name.description.yaml
in the recently created galaxian
folderdescription.yaml
filePreviously:
name: galaga
rom: galaga.zip
After your changes:
name: galaxian
rom: galaxian.zip
Depending on you operative system there are diferent ways to compress files. This example is for ubuntu.
galaxian
folderCompress...
test.zip
in any place in your disk.The test.zip
file is a special cabinet asset name for testing purposses only.
To test the cabinet you need to copy the test.zip
cabinet asset to the headset, using Sidequest for example.
Remember: test.zip
is for testing purposes, we should rename the zip file later after the testing phase.
test.zip
file to the /sdcard/Android/data/com.curif.AgeOfJoy/cabinets
folder./sdcard/Android/data/com.curif.AgeOfJoy/downloads
, in this example our ROM file name is ‘galaxian.zip’.If the game didn’t start or the cabinet didn’t spawn correctly, check the description.yaml file in search of errors. But if you didn’t find any issue, then probably you ROM is not compatible. Ask for help in forums and GitHub.
If you find the issue (may be a typo) repeat all from the step 2.3. The corrected cabinet will replace the actual without need to restart AGE of Joy.
If your game is running without any noticeable issue, then you can deploy the new cabinet:
test.zip
to a file name that represents the game in the cabinet, in our example should be galaxian.zip
/sdcard/Android/data/com.curif.AgeOfJoy/cabinets
folder./sdcard/Android/data/com.curif.AgeOfJoy/cabinetsdb
folder). Don’t touch that folder is for internal uses only. The game will delete the original zip file from /sdcard/Android/data/com.curif.AgeOfJoy/cabinets
Enjoy your new cabinet!