Documentation XML pour SkraperUI
Documentation XML pour SkraperUI
1
Table des matières
Introduction ...................................................................................................................................................................... 3
Balises « Globales » ........................................................................................................................................................... 4
La balise « Information » .................................................................................................................................................. 5
La balise « Viewport » ....................................................................................................................................................... 5
Les balises « Drawings » et « Item » ................................................................................................................................. 6
Les balises « Display » et « Rotation » .......................................................................................................................... 9
Mode d’utilisation « Standard » ............................................................................................................................... 9
Mode d’utilisation « Projection » ........................................................................................................................... 11
La balise « Fallback » (Plan de secours) ...................................................................................................................... 12
Filtrage d’un « Item » par Systèmes et/ou Orientation .............................................................................................. 13
Variable « %SYSTEM% » .............................................................................................................................................. 14
Filtrage avancé « Children » ........................................................................................................................................ 15
Future implémentation ................................................................................................................................................... 17
ANNEXE 1 ........................................................................................................................................................................ 18
Tous les systèmes........................................................................................................................................................ 18
ANNEXE 2 ........................................................................................................................................................................ 19
Systèmes « Parents / Enfants »................................................................................................................................... 19
2
Introduction
Ce document décrit le contenu des fichiers « User mix » XML destinés à être utilisés dans le logiciel SkraperUI. Ces fichiers
permettent de créer ses propres mix afin de les adapter à ses besoins.
L'Extensible Markup Language (XML) est un métalangage informatique de balisage générique qui dérive du SGML. Sa
syntaxe est dite « extensible » car elle permet de définir différents espaces de noms, c'est-à-dire des langages avec chacun leur
vocabulaire et leur grammaire. Elle est reconnaissable par son usage des chevrons (<, >) encadrant les noms des balises. L'objectif
initial de XML est de faciliter l'échange automatisé de contenus complexes (arbres, texte riche…) entre systèmes d'informations
hétérogènes.
Les fichiers User mix sont une liste d'objets que SkraperUI peut lire et interpréter pour créer des compositions d'images
basées sur les ressources graphiques fournies par la base de données [Link]
3
Balises « Globales »
Les fichiers XML User Mix sont constitués de 3 types de balises principales afin de composer une image :
Viewport : Contient la description de l'image de sortie (largeur, hauteur, couleur de fond, format, ...).
Drawings : Contient la liste (ou le tableau) d'un ou plusieurs « Item » (éléments graphiques).
Notes :
L’utilisation de commentaires est possible en utilisant la balise suivante : <!-- …Texte de mon commentaire… -->
(L’utilisation de « -- » est interdite dans le texte du commentaire).
« [Link] » qui est présent dans ImageComposition (Voir l’exemple ci-dessus)
sert d’indicateur de schéma et permet de vérifier la validité du XML.
L'utilisation d'un validateur XML pour valider et la syntaxe et mettre en forme de façon harmonieuse est toujours une
bonne idée. Des validateurs et formateurs « en ligne » de format XML sont accessibles gratuitement ici :
[Link] ou [Link]
4
La balise « Information »
Elle contient uniquement 3 attributs « textes » :
ShortName
LongName
Description
Author
Voici un exemple :
Seul l’attribut « LongName » est utilisée par SkraperUI (pour le moment) mais il est fortement recommandé de remplir
correctement les 3 champs. Pour l’utilisation des attributs, leurs noms parlent d’eux-mêmes, inutile de s’étaler davantage.
La balise « Viewport »
Elle contient les attributs décrivant le format avec lequel l’image de sortie sera construite et sauvegardée.
Voici un exemple :
Width et Height représentent la taille de l'image de sortie en pixels (Dans l’exemple : 1024 x 768 pixels).
Color défini la couleur de fond de l'image de sortie (avant que les éléments graphiques n’y soient ajoutés)
o Le format utilisé est « A, R, G, B » (Alpha, Rouge, Vert, Bleu) où chaque valeur peut varier de 00 à FF (Valeurs
hexadécimales).
o Alpha défini la transparence du fond. Si la composante Alpha est égale à 00, la couleur est totalement
transparente, si elle est égale à FF, la couleur est totalement opaque.
o Par exemple : Color="#80FF0000" produira un rouge transparent à 50%, qui se fondra avec l'arrière-plan sur
lequel l'image sera exploitée (très probablement, l'arrière-plan de votre front-end).
ImageFormat défini le format d’enregistrement de l’image de sortie. Il supporte les formats « Png » et « Jpg », mais
actuellement, la valeur est ignorée. Le format de sortie est toujours Png.
CompressionPercent est le taux de compression en % du format Jpg. Il peut varier de 0 à 100 (La valeur est ignorée pour
le format Png).
Si des attributs sont manquant, les attributs suivants seront utilisés par défaut :
Color="#00FFFFFF"
Width="800"
Height="600"
OutputFormat="Png"
CompressionPercent="100"
5
Les balises « Drawings » et « Item »
Nous arrivons maintenant au « cœur » du Mix mais, à partir d'ici, les choses deviennent un peu plus complexes.
La balise « Drawings » décrit une liste (ou un tableau) de balises enfants appelées « Item ». Chaque « Item » décrit une
ressource « ScreenScraper » qui sera téléchargée et utilisée dans le Viewport.
Les éléments sont tracés dans le Viewport dans le sens de lecture. Cela signifie que l'élément X+1 peut recouvrir
totalement ou partiellement l'élément X.
<Drawings>
<Item Type="Screenshot"></Item>
</Drawings>
Type représente la ressource graphique à télécharger et à ajouter au mix. Il doit être une chaine de caractère valide parmi
les suivantes :
o "NoRessource" o "ScreenMarqueeSmall"
o "Screenshot" o "Marquee"
o "ScreenshotTitle" o "Include"
o "FanArt" o "LocalFile"
o "Box2DFront" o "Region1"
o "Box2DSide" o "Region2"
o "Box2DBack" o "SystemBezel43"
o "Box3D" o "SystemBezel169"
o "Support" o "SystemWheel"
o "Wheel" o "SystemCarbonWheel"
o "WheelCarbon" o "SystemSteelWheel"
o "WheelSteel" o "SystemMonochromeLogo"
o "Classification" o "SystemIcon"
o "RecalBoxMixV1" o "SystemIconMini"
o "RecalBoxMixV2" o "SystemPhoto"
o "PictoPlayers" o "SystemPicture"
o "PictoNote" o "SystemControllerPhoto"
o "SupportTexture" o "SystemScreenMarquee"
o "BoxTexture" o "SystemWallPaper"
o "SteamGrid" o "Text"
o "ScreenMarquee"
6
La plupart d'entre elles correspondent directement à une ressource graphique de la base de donnée
[Link]
Mais, intéressons-nous aux 6 ressources « spéciales » ne se trouvant pas dans la base [Link] :
o Region1 et Region2 sont des drapeaux ronds (de taille d’origine : 128 x 128 pixels) correspondants aux régions
du jeu en cours de scrape.
Gardez en tête que Region1 et Region2 dépendent uniquement des régions définies dans la base de donnée
[Link] pour le jeu en cours de scrape et non aux « tags » de régions que vous pourriez voir dans le
nom du fichier (même si théoriquement, ils devraient être identiques).
o LocalFile permet d'utiliser une image « locale » à la place d'une ressource à télécharger. C’est-à-dire, un fichier
image présent sur votre disque dur qui doit se trouver dans le même répertoire que votre fichier
« [Link] ». Quand vous utilisez LocalFile, vous devez ajouter un attribut LocalFilePath, qui contient le
chemin de l'image locale, chemin relatif au fichier XML.
Exemple :
<Drawings>
<Item Type="LocalFile" LocalFilePath="[Link]"></Item>
</Drawings>
o Include permet d'utiliser un autre Mix à la place d'une ressource à télécharger. C’est-à-dire, un fichier mix xml
présent sur votre disque dur qui doit se trouver dans le même répertoire que votre fichier « [Link] ».
Quand vous utilisez Include, vous devez ajouter un attribut LocalFilePath, qui contient le chemin du mix, chemin
relatif au fichier XML. Include va donc charger et tracer le mix dans son propre Viewport (pas celui du mix
courant). L'image résultante deviendra celle de cet item, comme si c'était n'importe quelle autre ressource
image.
Exemple :
<Drawings>
<Item Type ="Include" LocalFilePath="[Link]"></Item>
</Drawings>
7
o Text permet de tracer le texte de son choix (ou provenant d’une variable prédéfinie). L’utilisation de Text
implique également celle d’attributs permettant de formater ce texte :
TextColor défini la couleur de fond du texte et fonctionne comme l’attribut « Color » du Viewport. Une
couleur inverse est ajoutée en liseré. Par exemple, si la couleur choisie est blanche, le texte sera tracé
blanc avec un léger filet noir autour, pour le détacher sur fond clair.
FontFamily permet de choisir avec quelle police sera tracé le texte. Si la police n’existe pas ou n’est pas
disponible, Windows choisira la police la plus proche. La taille de la police est calculée
automatiquement afin de s’ajuster au mieux à la taille du rectangle défini pour le tracé du texte.
FontStyle permet de mettre en forme le texte grâce à la combinaison des 4 valeurs suivantes, séparées
par des espaces : "Bold Italic Strikeout Underline"
TextAlign permet de modifier l’alignement du texte. Les possibilités sont identiques à celles de l’attribut
« Anchor » de la balise « Display » (Voir page suivante).
Exemple :
<Drawings>
<Item Type="Text" Text="%name%" TextColor="#FFFFFFFF" FontFamilly="Arial" FontStyle="Bold Italic"
TextAlign="VCenterHCenter"></Item>
</Drawings>
8
Les balises « Display » et « Rotation »
Ces deux balises sont dépendantes de « Item ». Elles permettent de mettre en forme et de placer dans le Viewport un
Item grâce à leurs attributs. Il y a 2 manières de mettre en forme un média :
Le mode « Standard » permet de placer des images de manière classique, elles seront toujours rectangulaires.
Le mode « Projection » permet de placer des images en les déformant de manière à leur donner un effet « 3D».
<Drawings>
<Item Type="Screenshot">
<Display Mode="Blit" X="472" Y="277" Width="469" Height="430" Transparency="0.0"
Anchor="VCenterHCenter" KeepRatio="false" Antialiasing="None" />
<Rotation XOffset="50%" YOffset="50%" Angle="0.0" />
</Item>
</Drawings>
Anchor représente le point de référence (ou point d'encrage) de l'Item afin de le placer dans le Viewport. Par convention,
le point de référence d'une image est son extrémité « haut – gauche », ce qui signifie que l'image sera tracée en partant
vers la droite et vers le bas à partir de ce point.
Cependant, vous pouvez choisir un autre point de référence parmi les 9 prédéfinis. L'élément sera tracé relativement à
partir de ce nouveau point.
"TopLeft" (1)
"TopHCenter" (2)
"TopRight" (3)
"VCenterLeft" (4)
"VCenterHCenter" (5)
"VCenterRight" (6)
"BottomLeft" (7)
"BottomHCenter" (8)
"BottomRight" (9)
Par exemple, pour tracer une image qui part du coin en bas à droite et qui va vers le centre, on utilise :
o X="100%"
o Y="100%"
o Anchor="BottomRight"
Autre exemple, pour centrer une image dans le Viewport (quelle que soit sa taille) :
o X="50%"
o Y="50%"
o Anchor="VCenterHCenter".
Note : Pour le moment, il n'est pas possible de spécifier un point d'encrage en pixel, en pourcentage, ou en dehors de l'image.
9
X, Y, Width et Height permettent de positionner (X et Y) et de redimensionner (Width et Height) l'image dans et par
rapport au Viewport. Les valeurs peuvent être exprimées de 3 manières différentes :
o Les valeurs numériques directes (Ex : "25") sont des coordonnées ou des tailles en pixels.
o Les valeurs pourcentages (Ex : "50%") sont des coordonnées ou des tailles en pourcentage de la taille du
"Viewport". Exemples :
"X": "50%" signifie que l'image sera tracée à partir de 50% de la largeur du Viewport (à partir du 400ème
pixel avec un Viewport de taille 800 x 600 pixels)
"Width": "33%" signifie que la largeur de l'élément graphique sera redimensionnée à 33% de la largeur
du Viewport.
o Les valeur exclamations (Ex : "100!") sont des coordonnées ou des tailles en pourcentage de la taille opposée du
Viewport. Exemples :
X="100!" ou Width="100!" signifie 100% de la hauteur du Viewport.
Y="100!" ou Heigth="100!" signifie 100% de la largeur du Viewport.
Les valeurs exclamations sont utiles pour contrôler la taille des images lorsqu'on utilise les rotations. Par
exemple, "Width": "100!" retaillera la largeur de l'image à 100% de la hauteur du Viewport. Tournez l'image de
90°, et elle rentrera parfaitement dans le Viewport.
KeepRatio est une valeur indiquant si l'aspect de l'image doit être conservé ou non. Deux valeurs sont possibles :
o "false" : l'image sera retaillée strictement selon les valeurs "Width"/"Height", et pourra donc être déformée.
o "true" : l'image sera retaillée pour entrer en mieux dans le rectangle "Width"/"Height", tout en conservant
l'aspect originel de l'image (pas de déformation).
Antialiasing est le type d'anti aliasing à appliquer lors du redimensionnement et du tracé de l'image. Trois valeurs sont
possible avec chacune un rendu différent :
o "None" : Aucun anti-aliasing. Si l'image est agrandie, elle gardera son aspect "8bit" que nous aimons tant. C’est
idéal pour les screenshots.
o "Medium" : Anti-aliasing moyen (AA bilineaire). Donne un aspect plus fin tout en gardant les pixels visibles.
o "High" : Anti-aliasing fort utilisant un algorithme bi cubique de haute qualité (AA bicubique). Idéal pour les
formes non rectangulaires comme les logos, les boitiers 3D, …
Transparency est une valeur à virgule flottante, indiquant la transparence globale de l'image à appliquer lors du tracé.
Elle peut aller de 0.0 (pas de transparence) à 1.0 (complètement transparent). Gardez à l'esprit que ce n'est pas une
valeur « Alpha ».
Si des attributs sont manquant, les attributs suivants seront utilisés par défaut :
Note : Les balises « Display » et « Rotation » ne sont pas obligatoires pour un « Item ». Si l’une, l’autre ou les deux sont
absentes, leurs effets sont ignorés.
10
Mode d’utilisation « Projection »
<Drawings>
<Item Type="Screenshot">
<Display Mode="Distord" X="79" Y="122" X2="219" Y2="161" X3="249" Y3="342" X4="106" Y4="362"
Antialiasing="None" Transparency="0.0" />
</Item>
</Drawings>
X, Y, X2, Y2, X3, Y3, X4, Y4 permettent de positionner les 4 coins de l'image dans et par rapport au Viewport. Les
valeurs peuvent être exprimées de 3 manières différentes (Voir mode « Standard »). Les 4 points sont définis comme
sur le schéma suivant :
Antialiasing est le type d'anti aliasing à appliquer lors du redimensionnement et du tracé de l'image. Trois valeur sont
possible avec chacune un rendu différent :
o "None" : Aucun anti-aliasing. Si l'image est agrandie, elle gardera son aspect "8bit" que nous aimons tant. C’est
idéal pour les screenshots.
o "Medium" : Anti-aliasing moyen (FSAAx2). Donne un aspect plus fin tout en gardant les pixels visibles.
o "High" : Anti-aliasing fort (FSAAx4). Idéal pour les formes non rectangulaires comme les logos, les boitiers 3D, …
Notes :
Les valeurs d’Antialiasing « Medium » et « High » entrainent un allongement du temps de scrape à cause du plus grand
nombre de pixels à calculer lors du tracé.
La balise « Rotation » et ses attributs fonctionnent avec ce mode mais il n’est pas conseillé de l’utiliser.
11
La balise « Fallback » (Plan de secours)
Toute balise « Item » peut contenir une « balise enfant » de secours nommée « Fallback » (récursivement, permettant
de faire du « fallback » en chaine). Les balises « fallback » sont utilisées lorsque la ressource demandée n'est pas disponible et se
comportent exactement comme les « Item ». Un exemple vaut mieux qu'un long discours :
<Item Type="Screenshot">
<Display X="50%" Y="0%" Width="90%" Height="90%" Anchor="TopHCenter" Antialiasing="None" />
<Rotation XOffset="50%" YOffset="50%" Angle="20.0" />
<Fallback Type="ScreenshotTitle">
<Display X="50%" Y="0%" Width="90%" Height="90%" Anchor="VCenterHCenter" Antialiasing="None" />
<Rotation XOffset="50%" YOffset="50%" Angle="20.0" />
<Fallback Type="LocalFile" LocalFilePath="[Link]">
<Display X="50%" Y="0%" Width="90%" Height="90%" Anchor="VCenterHCenter" Antialiasing="None"/>
<Rotation XOffset="50%" YOffset="50%" Angle="20.0" />
</Fallback>
</Fallback>
</Item>
La balise « Item » principale demande un screenshot. Pour le jeu en cours de scrape, si le screenshot n'est pas disponible,
sa balise « fallback » sera utilisée, et demandera le screenshot titre. Si le screenshot titre n'est pas disponible, c'est sa balise
fallback qui sera utilisée et une image locale sera tracée.
Si elles ne sont pas redéfinies, les balises « fallback » héritent des attributs « Display » et « Orientation » de leur
« parent ». Donc, l’exemple ci-dessus a un comportement identique à l’exemple suivant :
<Item Type="Screenshot">
<Display X="50%" Y="0%" Width="90%" Height="90%" Anchor="VCenterHCenter" Antialiasing="TopHCenter"/>
<Rotation XOffset="50%" YOffset="50%" Angle="20.0" />
<Fallback Type="ScreenshotTitle">
<Fallback Type="LocalFile" LocalFilePath="[Link]"/></Fallback>
</Item>
Les balises « fallback » ScreenshotTitle et LocalFile héritent des mêmes attributs « Display » et « Rotation » que le
Screenshot.
Autre exemple :
<Item Type="Screenshot">
<Display X="50%" Y="0%" Width="90%" Height="90%" Anchor="TopRight" Antialiasing="TopHCenter" />
<Rotation XOffset="0%" YOffset="0%" Angle="20.0" />
<Fallback Type="ScreenshotTitle">
<Fallback Type="LocalFile" LocalFilePath="[Link]">
<Rotation Angle="45.0" />
</Fallback>
</Fallback>
</Item>
Les balises « fallback » ScreenshotTitle et LocalFile héritent des mêmes attributs « Display » que le Screenshot. Pour
« Rotation » ScreenshotTitle hérite de la Rotation de Screenshot mais pour Fallback LocalFile », Rotation est redéfinie. XOffset et
YOffset ne sont pas précisés donc ils prennent les valeurs par défaut ("50%"), Angle prend la valeur "45.0".
12
Filtrage d’un « Item » par Systèmes et/ou Orientation
Les balises « Item » supportent un filtrage basique sur la valeur du « Système ScreenScraper ». Cela signifie qu'un objet
peut être tracé ou non en fonction du « Système ScreenScraper » utilisé pour le jeu en cours de scrape. Le filtrage est basé sur les
identifiants numériques des systèmes utilisés sur [Link]
Malheureusement, vous ne pouvez pas y avoir accès directement, mais vous pouvez utiliser la liste en Annexe 1 ou obtenir
la liste complète à partir l'API de démonstration ici :
[Link]
test&sspassword=test
Pour ajouter un filtre à un objet « Item », il faut lui ajouter un attribut « IfSystem » et/ou « IfOrientation ».
Exemple :
IfSystem spécifie le type de filtre pour le système (inclusion ou exclusion). Cinq valeurs sont possibles :
o "IsInTheList :IdSystem#1,…,IdSystem#X" : L'Item sera tracé uniquement pour les systèmes spécifiés dans la liste.
o "IsNotInTheList :IdSystem#1,…,IdSystem#X" : L’Item sera toujours tracé, sauf pour les systèmes spécifiés dans la
liste.
o "IsInTheListOrAncestors :IdSystem#1,…,IdSystem#X" : L’Item sera tracé uniquement pour les systèmes spécifiés
dans la liste ainsi que tous leurs systèmes « enfants » (cf. Annexe 2).
o "IsNotIntheListOrAncestors :IdSystem#1,…,IdSystem#X" : L’Item sera toujours tracé, sauf pour les systèmes
spécifiés dans la liste ainsi que tous leurs systèmes « enfants » (cf. Annexe 2).
o "DoNotCare" : Pas de système particulier (Valeur par défaut).
IfOrientation spécifie le type d’orientation que doit avoir l’Item pour qu’il soit inclus. Trois valeurs sont possibles :
o "IsPortrait" : La hauteur de l’élément est supérieure à sa largeur (Ex : 200 x 500 pixels).
o "IfLandscape" : La hauteur de l’élément est inférieure ou égale à sa largeur (Ex : 500 x 200 pixels).
o "IsWhatever" : Pas d’orientation particulière (Valeur par défaut).
Notes :
Dans une chaine de « fallback », un filtre est appliqué à l’Item dans lequel il est défini et il est hérité par ses « fallback ».
Il est également envisageable de filtrer ces derniers de la même façon.
Il est possible de filtrer par n° de système, par orientation ou les deux en même temps.
Exemple n°1 :
Cet « Item » de type « Wheel » ne sera tracé que pour les systèmes n°1 et n°2 ainsi que tous leurs systèmes « enfants » :
Megadrive, Megadrive 32X, Mega-CD, Megadrive - Sonic The Hedgehog 2 Hacks
Master-system
Exemple n° 2 :
Cet « Item » de type « Box3D » ne sera tracé que si son orientation est de format « Portrait ».
13
Variable « %SYSTEM% »
Comme pour le filtrage que l’on vient de voir, la variable « %SYSTEM% » a pour but de filtrer un objet « Item » sur la
valeur du « Système ScreenScraper ». Cependant, contrairement au filtrage, cette variable s’utilise uniquement avec un « Item »
de type « LocalFile ». Cela permet donc de créer des fichiers locaux particuliers pour les systèmes que l’on souhaite personnaliser.
La variable « %SYSTEM% » est à insérer dans le nom du fichier local à rechercher (« LocalFilePath »).
Exemple :
Lors du scrape :
Si le système en cours est Megadrive, l’image tracée sera le fichier local nommé « default_Screenshot_1.png ».
Si le système en cours est MAME, l’image tracée sera le fichier local nommé « default_Screenshot_75.png ».
Si le système en cours est PC Engine, l’image tracée sera le fichier local nommé « default_Screenshot_31.png ».
…
Notes :
Si le fichier local recherché n’est pas trouvé, l’image tracée sera le fichier local nommé « default_Screenshot_0.png »
(donc, ne pas oublier de le créer lors de la conception du mix).
Si « default_Screenshot_0.png » n’existe pas, une erreur de SkraperUI se produira.
La variable est utilisable à n’importe quel endroit dans le nom de fichier, pas uniquement à la fin
(« default_%SYSTEM%_Screenshot.png » ou « %SYSTEM%_default_Screenshot.png » sont parfaitement valides).
14
Filtrage avancé « Children »
Nous avons vu comment filtrer un « Item ». Mais il est possible grâce à la balise « Children » de tracer un ou plusieurs
objets « enfants » en fonction de l’objet « parent ».
Une balise « Children » dispose de deux attributs permettant de la définir : « DrawIfNoParent » et « Reference » comme
dans l’exemple suivant :
Les quatre exemples qui suivent seront plus parlant que de longues explications :
Exemple n° 1 :
Lors du scrape, selon de format de la « Box3D », le « Support » ne sera pas tracé aux mêmes coordonnées (La « Box3D »
est tracée dans les deux cas) :
En rouge : Si la « Box3D » est de format Portrait, le « support » sera tracé à X=20% et Y=90%.
En vert : Si la « Box3D » est de format Paysage, le « support » sera tracé à X=5% et Y=70%.
15
Exemple n° 2 :
Ici, on se sert du format de l’Item « Screenshot » comme variable pour le filtrage pour ses « Children » mais on ne le
trace pas grâce à l’attribut "TestOnly". La « Box3D » ne sera tracée que si le « Screenshot » est au format paysage.
TestOnly est un booléen qui peut prendre comme valeurs : true ou false (false étant la valeur par défaut). Si sa valeur
est true, il permet de définir un « Item » qui ne sera pas tracé. TestOnly est le seul attribut qui n’est pas hérité pas les fallback.
Exemple n° 3 :
Dans ce troisième exemple, le filtrage permet de définir pour quels systèmes les objets « GraphicElement » contenus
dans « Children » seront tracés. Dans ce cas, le « Screenshot » et la « Box3D » seront tracés uniquement pour les systèmes 1 et 2
(Megadrive et Master System).
16
Exemple n° 4 :
Dans ce dernier exemple, le filtrage « children » est un peu plus complexe. Dans un premier temps, les enfants seront
tracés si le système n’est ni le 9 ni le 52. Puis, dans un deuxième temps, on filtre une nouvelle fois pour que les enfants soient
tracés uniquement si le screenshot (ou le screenshot title) est au format Paysage. Dans le cas où les 2 screenshots sont
inaccessibles, les enfants seront tracés (grâce à l’attribut DrawIfNoParent="true") et ce sera le fichier local [Link] qui
remplacera le screenshot (ou le title).
Note :
Les « Items » présents dans la balise « Children » n’héritent pas des attributs de l’Item « Parent ». Il faut redéfinir
intégralement les attributs de « Item » des « Children ». Par contre, les Children héritent des attributs de « Display » et de
« Rotation » du parent à moins qu’ils ne soient redéfinis dans chaque Item.
Future implémentation
Ajout d’un « barrel effect », pour arrondir une image et lui donner un aspect d'écran CRT.
17
ANNEXE 1
Tous les systèmes
Nom du Système ID Gaelco 194 PC Engine 31
3DO 29 Game & Watch 52 PC Engine CD-Rom 114
Aamber Pegasus 83 Game Boy 9 PC Engine SuperGrafx 105
Acclaim 166 Game Boy Advance 12 PC [Link] 136
Action Max 81 Game Boy Color 10 PC Win9X 137
Adam 89 Game Gear 21 PC Windows 138
Adventure Vision 78 Game Master 103 PC-FX 72
Alpha Denshi Co. 182 Game Pocket Computer 95 Pecom 64 125
Amcoe 178 [Link] 121 Pinball FX2 143
American Laser Games 170 Gamecube 13 Pinball FX3 201
Amiga 64 GBA e-Reader 119 PlayChoice 184
Amiga (AGA) 111 GP32 101 Playstation 57
Amiga CD 134 GX4000 87 Playstation 2 58
Amiga CD32 130 IGS 176 Playstation 3 59
Amiga CD32 (hack) 139 Incredible Technologies 193 Playstation minis 172
Amiga CDTV 129 Intellivision 115 Plus/4 99
Android 63 Irem Classics 148 PS Vita 62
Another Arcade Emulator 35 Jaguar 27 Psikyo 167
Apple II 86 Jaguar CD 171 PSP 61
Arcadia 2001 94 Jaleco 159 PV-1000 74
Archimedes 84 Jupiter Ace 126 Sammy Classics 164
Astrocade 44 Kaneko 174 Satellaview 107
Atari 2600 26 Konami Classics 158 Saturn 22
Atari 2600 Supercharger 39 Linux 145 ScummVM 123
Atari 5200 40 Loopy 98 Sega Classics 147
Atari 7800 41 Lynx 28 Sega ST-V 69
Atari 800 38 Mac OS 146 Seibu Kaihatsu 190
Atari Classics 160 Mame / FBA / Libretro 75 SemiCom 187
Atari ST 42 Master System 2 Seta 149
Atari XE 43 Mega Duck 90 SG-1000 109
Atlus 185 Mega-CD 20 Sharp X68000 79
Atom 36 Megadrive - Sonic The Hedgehog 2 Hacks 203 Snes - Super Mario World Hacks 202
Atomiswave 53 Megadrive / Genesis 1 SNK Classics 154
Banpresto 186 Megadrive 32X 19 Sufami Turbo 108
BBC Micro 37 Mega-Play 196 Super A'can 100
BK 93 Mega-Tech 195 Super Cassette Vision 67
Camputers Lynx 88 Midway Classics 150 Super Game Boy 127
Capcom Classics 151 Mikrosha 124 Super Game Boy 2 128
Capcom Play System 6 Mitchell 189 Super Nintendo / Super Famicom 4
Capcom Play System 2 7 MO5 140 Taito Classics 157
Capcom Play System 3 8 Model 2 54 Technos 169
Cave 47 Model 3 55 Tecmo 153
CD-i 133 MSX 113 the Pinball Arcade 200
Century Electronics 179 MSX R Turbo 118 TI-99/4A 205
Channel F 80 MSX2 116 TO7 141
Cinematronics 192 MSX2+ 117 Toaplan 191
Coleco 183 Namco Classics 155 TRS-80 Color Computer 144
Colecovision 48 Namco System 22 156 Type X 112
Comad 177 Naomi 56 Universal 188
Commodore 64 66 Neo-Geo 142 [Link] 120
CoreGrafX 50 Neo-Geo CD 70 Vectrex 102
CPC 65 Neo-Geo MVS 68 Vic-20 73
Daphne 49 Neo-Geo Pocket 25 Video System Co. 175
Data East Classics 162 Neo-Geo Pocket Color 82 Videopac G7000 104
Dragon 32/64 91 NES 3 Virtual Boy 11
Dreamcast 23 N-Gage 30 Visco 181
Dynax 173 Nichibutsu 180 Visual Pinball 198
EG2000 Colour Genie 92 Nintendo 3DS 17 Wii 16
Eighting / Raizing 152 Nintendo 64 14 Wii U 18
Electron 85 Nintendo 64DD 122 WonderSwan 45
Exidy 165 Nintendo Classics 161 WonderSwan Color 46
EXL 100 96 Nintendo DS 15 Xbox 32
Family Computer Disk System 106 Nintendo Power 110 Xbox 360 33
Flipper 197 NMK 163 ZX Spectrum 76
FM-7 97 Oric 1 / Atmos 131 ZX81 77
Future Pinball 199 PC Dos 135
18
ANNEXE 2
Systèmes « Parents / Enfants »
Megadrive / Genesis (1) Eighting / Raizing (152)
Megadrive 32X (19) Tecmo (153)
Mega-CD (20) SNK Classics (154)
Megadrive - Sonic The Hedgehog 2 Hacks (203) Namco Classics (155)
NES (3) Namco System 22 (156)
Family Computer Disk System (106) Taito Classics (157)
Super Nintendo / Super Famicom (4) Konami Classics (158)
Satellaview (107) Jaleco (159)
Sufami Turbo (108) Atari Classics (160)
Nintendo Power (110) Nintendo Classics (161)
Snes - Super Mario World Hacks (202) Data East Classics (162)
Game Boy (9) NMK (163)
Super Game Boy (127) Sammy Classics (164)
Super Game Boy 2 (128) Exidy (165)
Game Boy Advance (12) Acclaim (166)
GBA e-Reader (119) Psikyo (167)
Nintendo 64 (14) Technos (169)
Nintendo 64DD (122) American Laser Games (170)
Atari 2600 (26) Dynax (173)
Atari 2600 Supercharger (39) Kaneko (174)
Jaguar (27) Video System Co. (175)
Jaguar CD (171) IGS (176)
PC Engine (31) Comad (177)
CoreGrafX (50) Amcoe (178)
PC Engine SuperGrafx (105) Century Electronics (179)
PC Engine CD-Rom (114) Nichibutsu (180)
PSP (61) Visco (181)
Playstation minis (172) Alpha Denshi Co. (182)
Amiga (64) Coleco (183)
Amiga (AGA) (111) PlayChoice (184)
Amiga CDTV (129) Atlus (185)
Amiga CD32 (130) Banpresto (186)
Amiga CD (134) SemiCom (187)
Amiga CD32 (hack) (139) Universal (188)
Mame / FBA / Libretro (75) Mitchell (189)
Capcom Play System (6) Seibu Kaihatsu (190)
Capcom Play System 2 (7) Toaplan (191)
Capcom Play System 3 (8) Cinematronics (192)
Another Arcade Emulator (35) Incredible Technologies (193)
Cave (47) Gaelco (194)
Daphne (49) Mega-Tech (195)
Atomiswave (53) Mega-Play (196)
Model 2 (54) Neo-Geo Pocket Color (82)
Model 3 (55) Neo-Geo Pocket (25)
Naomi (56) MSX (113)
Neo-Geo MVS (68) MSX2 (116)
Sega ST-V (69) MSX2+ (117)
Type X (112) MSX R Turbo (118)
Neo-Geo (142) PC Dos (135)
Sega Classics (147) PC [Link] (136)
Irem Classics (148) PC Win9X (137)
Seta (149) PC Windows (138)
Midway Classics (150) TO7 (141)
Capcom Classics (151) MO5 (140)
19