How to Create DSi/3DS Themes
To make a TWiLight Menu++ theme, you will need an image editor capable of exporting .png
files, 16 BPP .bmp
files or .png
files, and 4 BPP .bmp
files. Idéalement, il devrait également être en mesure de réorganiser manuellement les palettes d’images. GIMP is recommended and will be used for this guide, as it’s capable of everything needed.
Partie 1 : Télécharger les exemples #
The first thing you should do is download the example themes. These can be used as a base for your theme and are already in the correct format, so if you have issues later on, you can compare with these.
Partie 2 : Modifier les images #
Download and install GIMP
- D’autres éditeurs d’images tels que Photoshop peuvent fonctionner, mais GIMP sera utilisé dans ce guide
Once installed, open GIMP and select Windows
-> Dockable Dialogs
-> Colormap
. Cela ouvre la boîte de dialogue de la palette, qui sera utile lors de l’édition d’images palettisées.
Vous pouvez maintenant ouvrir l’image que vous voulez modifier dans GIMP et passer à la section ci-dessous en fonction du dossier dans lequel elle se trouve. Notez que TWiLight Menu++ est pointilleux sur le format exact des images et qu’il varie selon le dossier dans lequel elles se trouvent, assurez-vous donc d’exporter comme indiqué dans la section.
Background textures (background
folder) #
These can be PNG files or 16-bit (A1 R5 G5 B5
or X1 R5 G5 B5
) BMP files.
- Si vous utilisez des fichiers BMP, vous pouvez les régler sur 16 bits dans les options avancées lors de l’exportation. Vous devrez peut-être le faire à chaque fois que vous exporterez en BMP
Texture | Description |
---|---|
top | La texture de fond de l’écran supérieur |
top_photo | Texture de l’arrière-plan de l’écran supérieur lorsqu’une photo est affichée |
bottom | La texture de l’arrière-plan inférieur lorsqu’une icône n’est pas survolée |
bottom_ds | Pour le thème 3DS, la texture de l’arrière-plan inférieur lorsqu’une icône n’est pas survolée sur une DS Tank/Lite |
bottom_macro | Pour le thème DSi, la texture de l’arrière-plan lorsqu’une icône n’est pas survolée en utilisant le mode Macro |
bottom_bubble | La texture de l’arrière-plan inférieur lorsqu’une icône est survolée |
bottom_bubble_ds | Pour le thème 3DS, la texture de l’arrière-plan inférieur lorsqu’une icône est survolée sur une DS Tank/Lite |
bottom_bubble_macro | Pour le thème DSi, la texture de l’arrière-plan lorsqu’une icône est survolée en utilisant le mode Macro |
bottom_moving | Pour le thème DSi, la texture de l’arrière-plan inférieur lors du déplacement d’une icône |
bottom_moving_macro | For the DSi theme, the background texture when moving an icon while using Macro Mode |
Battery textures (battery
folder) #
Il doit s’agir de fichiers PNG. La transparence est prise en charge, mais seule une transparence à 100 % fonctionnera.
Texture | Description/Notes |
---|---|
battery0 | Flashes with battery1 when the battery is very low |
battery1 | 0-4 sont utilisés en mode DSi |
battery1purple | Purple icons are used when Power LED color is set to Purple in settings |
battery2 | |
battery2purple | |
battery3 | |
battery3purple | |
battery4 | |
battery4purple | |
batterycharge | |
batterychargeblink | Flashes with batterycharge while charging |
batteryfull | Utilisé en mode DS sur DSi/3DS |
batteryfullDS | Utilisé avec la DS Tank/DS Lite |
batterylow | Utilisé en mode DS |
Paletted textures (grf
folder) #
These must be 4 BPP (16 color) BMP files.
To edit these in GIMP, select Image
-> Mode
-> RGB
to allow changing colors, then when done changing colors, select Image
-> Mode
-> Indexed...
to convert back to paletted. When switching to indexed, ensure that Generate optimum palette
is checked and Maximum number of colors
is set to 16
.
Note: Some images in the DSi theme have their palettes overridden based on the user’s profile color. If editing the colors of these ensure that the UserPalette
option for it in the theme.ini
is set to 0
.
Après avoir converti en indexé, allez dans le dialogue de la palette et assurez-vous que la couleur transparente (#FF00FF) est la couleur #0 dans la palette. If it isn’t, right click in the colormap and select Rearrange Colormap...
then move the transparent color to be the first color in the colormap and select OK
.
If there are fewer than 16 colors in your final colormap, press the +
button at the bottom of the colormap dialog until you have 16 colors.
When exporting, it’s recommended to check the Do not write color space information
box under the Compatibility Options
dropdown.
Texture | Description |
---|---|
bips | Les points affichés en bas de la barre de défilement (thème DSi) |
box | La texture de la boîte, contenant à la fois des textures pleines et vides (thème DSi) |
box_empty | La texture affichée pour une boîte vide (thème 3DS) |
box_full | La texture affichée pour une boîte avec une icône (thème 3DS) |
brace | La texture de l’accolade affichée après la première et la dernière icône (thème DSi) |
bubble | La partie inférieure de la bulle qui s’affiche au-dessus de la bordure de démarrage ou de la boîte d’icônes |
button_arrow | Les textures pour les flèches de chaque côté de la barre de défilement inférieure (thème DSi) |
cornerbutton | Les boutons qui sont affichés dans le menu SELECT (thème DSi) (le nom est basé sur une ancienne utilisation) |
cursor | La bordure avec des images d’animation qui indiquent l’icône sélectionnée (thème 3DS) |
dialogbox | L’arrière-plan de la boîte de dialogue qui glisse vers le bas |
folder | L’icône des dossiers |
icon_a26 | L’icône des jeux Atari 2600 |
icon_col | L’icône des jeux Colecovision |
icon_gb | L’icône des jeux Game Boy |
icon_gba | L’icône des jeux GBA |
icon_gbamode | L’icône du mode GBA natif |
icon_gg | L’icône des jeux Game Gear |
icon_img | L’icône des images BMP, GIF et PNG |
icon_int | L’icône des jeux Intellivision |
icon_m5 | L’icône des jeux Sord M5 |
icon_manual | L’icône du manuel |
icon_md | L’icône des jeux SEGA Mega Drive |
icon_nes | L’icône des jeux NES |
icon_ngp | L’icône des jeux Neo Geo Pocket |
icon_pce | L’icône des jeux PC Engine/TurboGrafx-16 |
icon_plg | L’icône des plugins DSTWO |
icon_settings | L’icône des paramètres Nintendo DSi |
icon_sg | L’icône des jeux SEGA SG-1000 |
icon_sms | L’icône des jeux SEGA Master System |
icon_snes | L’icône des jeux SNES |
icon_unk | L’icône affichée lorsqu’il manque une icône pour un jeu |
icon_ws | L’icône des jeux WonderSwan |
launch_dot | Les points affichés lors du lancement d’un jeu (thème DSi) |
moving_arrow | La flèche affichée lorsqu’un jeu est déplacé (thème DSi) |
progress | L’animation de chargement de la progression avec huit images |
scroll_window | La partie de la barre de défilement qui indique les icônes qui sont visibles |
small_cart | Les icônes affichées en haut (thème 3DS) et dans le menu SELECT (thème DSi) |
start_border | La bordure avec des images d’animation qui indique l’icône sélectionnée (thème DSi) |
start_text | Le texte affiché sur la bordure de démarrage (thème DSi) |
wirelessicons | Les icônes affichées pour indiquer qu’un jeu dispose d’un support sans fil |
DS Classic Menu textures (quickmenu
folder) #
Il doit s’agir de fichiers PNG.
Texture | Description |
---|---|
bottombg | Fond de l’écran inférieur |
phat_topbg | Fond pour l’écran supérieur de la DS Tank |
topbg | Fond pour l’écran supérieur sur tout autre modèle de DS |
UI textures (ui
folder) #
Il doit s’agir de fichiers PNG. La transparence est prise en charge, mais seule une transparence à 100 % fonctionnera. Tout pixel transparent dans une texture doit l’être dans toutes les autres, afin qu’il soit correctement écrasé lors d’un changement.
Texture | Description |
---|---|
Lshoulder | La gâchette gauche |
Lshoulder_greyed | La gâchette gauche quand il n’y a pas de pages à gauche |
Lshoulder_photo | La gâchette gauche lorsqu’une photo est affichée |
Lshoulder_photo_greyed | La gâchette gauche, sans page à gauche et une photo affichée |
Rshoulder | La gâchette droite |
Rshoulder_greyed | La gâchette droite quand il n’y a pas de pages à droite |
Rshoulder_photo | La gâchette droite lorsqu’une photo est affichée |
Rshoulder_photo_greyed | La gâchette droite, sans page à gauche et une photo affichée |
Video texture (video
folder) #
Only used for the 3DS theme, 3dsRotatingCubes.rvid
is a Rocket Video file. For more information on converting videos to rvid, read Converting a video to .rvid on the Vid2RVID wiki. Si vous ne voulez pas qu’il soit affiché, vous pouvez simplement le supprimer.
Volume textures (volume
folder) #
Les textures de volume ne sont affichées qu’en mode DSi.
Il doit s’agir de fichiers PNG. La transparence est prise en charge, mais seule une transparence à 100 % fonctionnera.
Texture | Description/Notes |
---|---|
volume0 | 0 est en sourdine, 4 est en plein volume |
volume1 | |
volume2 | |
volume3 | |
volume4 |
Theme configuration (theme.ini
file) #
You may configure various options on how the theme is drawn in the theme.ini
to accommodate larger graphics or different layouts. For true/false options, 0
is false, and 1
is true. Les options dont la valeur par défaut est vide pour un thème sont inutilisées dans ce thème.
Valeur | Description/Notes | Par défaut (3DS) | Par défaut (DSi) |
---|---|---|---|
StartBorderRenderY | La position Y initiale de la bordure de démarrage | 92 | 81 |
StartBorderSpriteW | La largeur du sprite de la bordure de démarrage. Notez que la texture de la bordure de démarrage correspond exactement à la moitié de la bordure complète | 32 | 32 |
StartBorderSpriteH | La hauteur du sprite de la bordure de démarrage | 64 | 80 |
StartTextRenderY | La position Y initiale du texte de démarrage | 143 | 143 |
BubbleTipRenderX | La position X de l’extrémité de la bulle qui est affichée au-dessus de la bordure de démarrage | 125 | 122 |
BubbleTipRenderY | La position Y de l’extrémité de la bulle qui est affichée au-dessus de la bordure de démarrage | 98 | 80 |
BubbleTipSpriteW | La largeur du sprite de l’extrémité de la bulle | 7 | 11 |
BubbleTipSpriteH | La hauteur du sprite de l’extrémité de la bulle | 7 | 8 |
TitleboxRenderY | La position Y initiale de la zone du texte du titre | 96 | 85 |
TitleboxTextY | La position Y initiale du texte du titre | 55 | 30 |
TitleboxTextW | La largeur maximale du texte du titre | 200 | 240 |
TitleboxTextLarge | Utilisation ou non de la grande police pour le texte du titre | 0 | 1 |
TitleboxMaxLines | Le nombre maximum de lignes de texte à afficher pour le titre | 3 | 4 |
VolumeRenderX | La position X sur l’écran supérieur pour afficher l’icône du volume | 4 | 4 |
VolumeRenderY | La position Y sur l’écran supérieur pour afficher l’icône du volume | 5 | 5 |
ShoulderLRenderX | La position X sur l’écran supérieur pour afficher la gâchette gauche | 0 | 0 |
ShoulderLRenderY | La position Y sur l’écran supérieur pour afficher la gâchette gauche | 172 | 172 |
ShoulderRRenderX | La position X sur l’écran supérieur pour afficher la gâchette droite | 178 | 178 |
ShoulderRRenderY | La position Y sur l’écran supérieur pour afficher la gâchette droite | 172 | 172 |
BatteryRenderX | La position X sur l’écran supérieur pour afficher l’icône de la batterie | 235 | 235 |
BatteryRenderY | La position Y sur l’écran supérieur pour afficher l’icône de la batterie | 5 | 5 |
UsernameRenderX | La position X sur l’écran supérieur pour afficher le texte du nom d’utilisateur | 28 | 28 |
UsernameRenderY | La position Y sur l’écran supérieur pour afficher le texte du nom d’utilisateur | 15 | 15 |
UsernameRenderXDS | La position X sur l’écran supérieur pour afficher le texte du nom d’utilisateur, sur une DS Tank/Lite | 4 | 4 |
DateRenderX | The X position on the top screen to draw the date text | 162 | 162 |
DateRenderY | The Y position on the top screen to draw the date text | 7 | 7 |
TimeRenderX | The X position on the top screen to draw the time text | 200 | 200 |
TimeRenderY | The Y position on the top screen to draw the time text | 7 | 7 |
PurpleBatteryAvailable | Whether or not to use the purple battery icons when Power LED color is set to Purple in settings | 1 | 1 |
FontPalette1 | La couleur transparente de la police, inutilisée pour les polices par défaut | 0x0000 | 0x0000 |
FontPalette2 | The colors of the font, use this site to convert | 0xDEF7 | 0xDEF7 |
FontPalette3 | 0xC631 | 0xC631 | |
FontPalette4 | 0xA108 | 0xA108 | |
FontPaletteDateTime1 | La couleur de remplacement transparente de la police pour la date et l’heure | 0x0000 | 0x0000 |
FontPaletteDateTime2 | La couleur de remplacement de la police pour la date et l’heure | 0xDEF7 | 0xA529 |
FontPaletteDateTime3 | 0xC631 | 0xBDEF | |
FontPaletteDateTime4 | 0xA108 | 0xD6B5 | |
FontPaletteTitlebox1 | La couleur de remplacement transparente de la police pour la boîte du titre de la ROM | 0x0000 | 0x0000 |
FontPaletteTitlebox2 | La couleur de remplacement de la police pour la boîte du titre de la ROM | 0xDEF7 | 0xDEF7 |
FontPaletteTitlebox3 | 0xC631 | 0xC631 | |
FontPaletteTitlebox4 | 0xA108 | 0xA108 | |
FontPaletteDialog1 | La couleur de remplacement transparente de la police pour les boîtes de dialogue | 0x0000 | 0x0000 |
FontPaletteDialog2 | La couleur transparente de la police pour les boîtes de dialogue | 0xDEF7 | 0xDEF7 |
FontPaletteDialog3 | 0xC631 | 0xC631 | |
FontPaletteDialog4 | 0xA108 | 0xA108 | |
FontPaletteOverlay1 | La couleur transparente de la police pour le texte superposé | 0x0000 | 0x0000 |
FontPaletteOverlay2 | La couleur de remplacement de la police pour le texte superposé | 0xDEF7 | 0xDEF7 |
FontPaletteOverlay3 | 0xC631 | 0xC631 | |
FontPaletteOverlay4 | 0xA108 | 0xA108 | |
FontPaletteUsername1 | La couleur de remplacement transparente de la police pour le nom d’utilisateur | 0x0000 | 0x0000 |
FontPaletteUsername2 | La couleur de remplacement de la police pour le nom d’utilisateur | 0xDEF7 | 0xDEF7 |
FontPaletteUsername3 | 0xC631 | 0xC631 | |
FontPaletteUsername4 | 0xA108 | 0xA108 | |
BipsUserPalette | Utilisation ou non de la couleur du profil DS pour la palette des points de la barre de défilement | 0 | |
BoxUserPalette | Utilisation ou non de la couleur du profil DS pour la palette des cases contenant les icônes de jeu dans le thème DSi | 0 | |
BoxEmptyUserPalette | Utilisation ou non de la couleur du profil DS pour la palette des cases vides dans le thème 3DS | 0 | |
BoxFullUserPalette | Utilisation ou non de la couleur du profil DS pour la palette des cases contenant les icônes de jeu dans le thème 3DS | 0 | |
BraceUserPalette | Utilisation ou non de la couleur du profil DS pour la palette de l’accolade au début et à la fin de la liste de jeu | 0 | |
BubbleUserPalette | Utilisation ou non de la couleur du profil DS pour la palette de la pointe de la bulle de titre | 0 | 0 |
ButtonArrowUserPalette | Utilisation ou non de la couleur du profil DS pour la palette des boutons fléchés en bas de l’écran | 1 | |
CornerButtonUserPalette | Utilisation ou non de la couleur du profil DS pour la palette des icônes du menu DSi et des paramètres dans le menu SELECT | 0 | |
CursorUserPalette | Utilisation ou non de la couleur du profil DS pour la palette du curseur | 0 | |
DialogBoxUserPalette | Utilisation ou non de la couleur du profil DS pour la palette de la boîte de dialogue | 0 | 1 |
FolderUserPalette | Utilisation ou non de la couleur du profil DS pour la palette des dossiers | 0 | 0 |
LaunchDotsUserPalette | Utilisation ou non de la couleur du profil DS pour la palette des points de lancement | 1 | |
MovingArrowUserPalette | Utilisation ou non de la couleur du profil DS pour la palette de la flèche affichée lors du déplacement des icônes | 1 | |
ProgressUserPalette | Utilisation ou non de la couleur du profil DS pour la palette de l’animation rotative de la progression du chargement | 1 | 1 |
ScrollWindowUserPalette | Utilisation ou non de la couleur du profil DS pour la palette de l’arrière-plan de la fenêtre de défilement sur la barre de défilement | 0 | |
SmallCartUserPalette | Utilisation ou non de la couleur du profil DS pour la palette des icônes de cartouche | 0 | 0 |
StartBorderUserPalette | Utilisation ou non de la couleur du profil DS pour la palette de la bordure de démarrage | 1 | |
StartTextUserPalette | Utilisation ou non de la couleur du profil DS pour la palette du texte de démarrage | 1 | |
WirelessIconsUserPalette | Utilisation ou non de la couleur du profil DS pour la palette des icônes de la connexion sans fil | 0 | 0 |
IconA26UserPalette | Utilisation ou non de la couleur du profil DS pour la palette de l’icône Atari 2600 | 0 | 0 |
IconCOLUserPalette | Utilisation ou non de la couleur du profil DS pour la palette de l’icône ColecoVision | 0 | 0 |
IconGBUserPalette | Utilisation ou non de la couleur du profil DS pour la palette de l’icône Game Boy | 0 | 0 |
IconGBAUserPalette | Utilisation ou non de la couleur du profil DS pour la palette de l’icône Game Boy Advance | 0 | 0 |
IconGBAModeUserPalette | Utilisation ou non de la couleur du profil DS pour la palette de l’icône du mode GBA natif | 0 | 0 |
IconGGUserPalette | Utilisation ou non de la couleur du profil DS pour la palette de l’icône Game Gear | 0 | 0 |
IconIMGUserPalette | Utilisation ou non de la couleur du profil DS pour la palette de l’icône d’image | 0 | 0 |
IconINTUserPalette | Utilisation ou non de la couleur du profil DS pour la palette de l’icône Intellivision | 0 | 0 |
IconM5UserPalette | Utilisation ou non de la couleur du profil DS pour la palette de l’icône Sord M5 | 0 | 0 |
IconManualUserPalette | Utilisation ou non de la couleur du profil DS pour la palette de l’icône du manuel | 0 | 0 |
IconMDUserPalette | Utilisation ou non de la couleur du profil DS pour la palette de l’icône Mega Drive | 0 | 0 |
IconNESUserPalette | Utilisation ou non de la couleur du profil DS pour la palette de l’icône NES/Famicom | 0 | 0 |
IconNGPUserPalette | Utilisation ou non de la couleur du profil DS pour la palette de l’icône Neo Geo Pocket | 0 | 0 |
IconPCEUserPalette | Utilisation ou non de la couleur du profil DS pour la palette de l’icône PC Engine | 0 | 0 |
IconPLGUserPalette | Utilisation ou non de la couleur du profil DS pour la palette de l’icône de plugin DSTWO | 0 | 0 |
IconSettingsUserPalette | Utilisation ou non de la couleur du profil DS pour la palette de l’icône des paramètres DSi | 0 | 0 |
IconSGUserPalette | Utilisation ou non de la couleur du profil DS pour la palette de l’icône SG-1000 | 0 | 0 |
IconSMSUserPalette | Utilisation ou non de la couleur du profil DS pour la palette de l’icône Master System | 0 | 0 |
IconSNESUserPalette | Utilisation ou non de la couleur du profil DS pour la palette de l’icône SNES | 0 | 0 |
IconUnknownUserPalette | Utilisation ou non de la couleur du profil DS pour la palette de l’icône inconnue (manquante) | 0 | 0 |
IconWSUserPalette | Utilisation ou non de la couleur du profil DS pour la palette de l’icône WonderSwan | 0 | 0 |
UsernameUserPalette | Utilisation ou non de la couleur du profil DS pour la palette du nom d’utilisateur | 1 | 1 |
ProgressBarUserPalette | Utilisation ou non de la couleur du profil DS comme couleur de la barre de progression | 1 | 1 |
ProgressBarColor | The color of the progress bar if ProgressBarUserPalette is disabled | 0x7C00 | 0x7C00 |
UseAlphaBlend | Mélange ou non des couleurs du texte du sur l’écran supérieur (date/heure et nom d’utilisateur) avec les couleurs de l’arrière-plan | 1 | 1 |
DarkLoading | Possibilité ou non d’effectuer un fondu au noir plutôt qu’au blanc lors des écrans de chargement | 0 | 0 |
RenderPhoto | Afficher ou non une photo sur l’écran supérieur | 0 | 1 |
RotatingCubesRenderY | La position Y sur l’écran supérieur pour afficher les cubes en rotation | 78 | |
PlayStartupJingle | Utilisation ou non du son de démarrage avant la musique de fond principale. See the custom SFX page for more information | 1 | 0 |
StartupJingleDelayAdjust | Le nombre d’échantillons au début du son de démarrage à partir duquel la musique de fond doit commencer | 0 | 0 |
Options du mode Macro #
You may add specific override options to theme.ini
for use in Macro Mode. To do this, add [MACRO]
to a blank line at the bottom of the configuration file, then add any specified configurations below it.
Musique de fond et effets sonores personnalisés #
The DSi and 3DS UIs also support custom music. See DSi/3DS Themes - Custom SFX for more details.
Polices personnalisées #
You may put Custom Fonts in the font
folder for use in the theme. You can also add override fonts for the date & time using date_time.nftr
, and the console username with username.nftr
.
Palettes personnalisées #
For the paletted textures (grf
folder), you can optionally add override palette sets which are used when the corresponding UserPalette
setting is enabled. Palette set files can be created using this editor. Lorsque vous utilisez l’éditeur, importez l’image avec laquelle vous souhaitez travailler, puis créez une palette pour chacune des 16 couleurs du profil DS. You can use this example palette file as a starting point.
Les 16 lignes de la collection de palettes correspondent à chaque couleur du profil et doivent être placées dans l’ordre suivant :
- Gris-Bleu
- Marron
- Rouge
- Rose
- Orange
- Jaune
- Vert citron
- Vert
- Vert foncé
- Turquoise
- Cyan/Bleu clair
- Bleu
- Bleu foncé/Indigo
- Violet/Pourpre foncé
- Violet
- Magenta
Once you’ve created a palette file, place it in the palettes
folder. The name of the palette file should match the name of its image but with a .bin
extension instead (ex. start_border.bin
will be applied to start_border.bmp
).
You may also put a username.bin
palette file to change the palettes of the username font. Make sure to set the palette editor to Font Mode
when creating this file.
Partie 3 : Ajout dans TWiLight Menu++ #
Once you’ve edited some graphics and would like to test your theme, simply copy your theme folder (the folder containing the background
, battery
, etc folders) to sd:/_nds/TWiLightMenu/3dsmenu/themes/
or sd:/_nds/TWiLightMenu/dsimenu/themes/
for 3DS and DSi theme themes respectively.
Part 4: Sharing your theme #
Once you’ve completed your theme, you can share it with the community by creating a Pull Request adding it to the DS-Homebrew/twlmenu-extras GitHub repository in a .7z
file. If you’re unfamiliar with using git you can also simply create an issue on that repository with a zip file of your theme requesting it be added.