Themes consist of a single XML file. This XML tells HyperSpin the following...
Themes are made with 1024x768 screen resolution in mind. If HyperSpin is set to run at a resolution other than 1024x768, it will automatically scale the theme up or down to fit the resolution - this way only one theme is required for any number of resolutions.
Here's an example XML file used for the Ghouls N Ghosts theme for MAME...
<Theme>
<video w="505" h="500" x="310" y="510" r="0" below="yes" time="1" bcolor="0" bsize="0" type="ease" start="left" />
<artwork1 x="400" y="180" r="0" time=".5" type="fade" start="top" rest="hover" />
<artwork2 x="900" y="460" delay="2" time=".5" type="ease" start="right" />
<artwork3 x="780" y="645" delay="1" time=".5" type="grow center shrink" start="none" />
<artwork4 delay="0" time="0" type="none" start="none" />
</Theme>
This file would be saved as ghouls.xml in the Media/MAME/Themes folder. All the video and artwork elements that it mentions are stored in individual folders and named ghouls.png, ghouls.swf or ghouls.flv (for the video preview). For example, the files that the Ghouls N Ghosts theme uses are...
Media\MAME\Video\ghouls.flv (the preview video)
Media\MAME\Video\ghouls.png (the border around the video)
Media\MAME\Images\Artwork1\ghouls.png (first image element)
Media\MAME\Images\Artwork2\ghouls.png (second image element)
Media\MAME\Images\Artwork3\ghouls.png (third image element)
Media\MAME\Images\Artwork4\ghouls.swf (fourth image element)