--- lang: uk-UA layout: wiki section: twilightmenu category: customization title: Як створювати скіни DSi/3DS description: Як створювати власні скіни DSi та 3DS для TWiLight Menu++ --- Для створення скіну TWiLight Menu++ вам знадобиться графічний редактор, здатний експортувати файли `.png`, 16 BPP `.bmp` або `.png` файлів, а також 4 BPP `.bmp` файлів. В ідеалі, він також повинен мати можливість вручну переставляти палітри зображень. [GIMP](https://www.gimp.org) рекомендується і буде використовуватися для цього посібника, оскільки в ньому є все необхідне. ## Частина 1: Завантажити приклади Перше, що вам слід зробити - завантажити [приклади скінів](/assets/files/skin-examples.zip). Вони можуть бути використані як основа для вашого скіну та вже мають правильний формат, тому, якщо у вас виникнуть проблеми пізніше, ви зможете порівняти їх з цими. ## Частина 2: Редагування зображень Завантажте та встановіть [GIMP](https://www.gimp.org) - Інші графічні редактори, такі як Photoshop, можуть працювати, але в цьому посібнику ми будемо використовувати GIMP Після встановлення відкрийте GIMP і виберіть `Windows` -> `Dockable Dialogs` -> `Colormap`. Відкриється діалогове вікно "Сolormap", яке стане у пригоді під час редагування палітрових зображень. Тепер ви можете відкрити будь-яке зображення, яке хочете відредагувати в GIMP, і перейти до наступного розділу, залежно від того, в якій теці воно знаходиться. Зверніть увагу, що TWiLight Menu++ прискіпливо ставиться до точного формату зображень, і він залежить від того, в якій теці вони знаходяться, тому переконайтеся, що експортуєте, як зазначено в розділі. ### Фонові текстури (тека `background`) Це можуть бути PNG-файли або 16-розрядні (`A1 R5 G5 B5` або `X1 R5 G5 B5`) BMP-файли. - Якщо ви використовуєте BMP-файли, ви можете встановити для них 16-бітну кодування в Додаткових параметрах під час експорту. Можливо, вам доведеться робити це щоразу, коли ви експортуєте у форматі BMP | Текстури | Опис | | --------------------- | --------------------------------------------------------------------------------------------- | | top | Текстура фону верхнього екрана | | top_photo | Текстура верхнього фону екрана під час показу фотографії | | bottom | Нижня фонова текстура, коли не наведено курсор на іконку | | bottom_ds | Для теми 3DS, нижня фонова текстура, коли не наведено вказівник на піктограму на DS Phat/Lite | | bottom_macro | Для теми 3DS, нижня фонова текстура, коли не наведено вказівник на піктограму на DS Phat/Lite | | bottom_bubble | Нижня фонова текстура, коли не наведено вказівник на іконку | | bottom_bubble_ds | Для теми 3DS, нижня фонова текстура, коли не наведено вказівник на піктограму на DS Phat/Lite | | bottom_bubble_macro | Для теми 3DS, нижня фонова текстура, коли не наведено вказівник на піктограму на DS Phat/Lite | | bottom_moving | Для теми DSi, нижня фонова текстура при переміщенні піктограми | | bottom_moving_macro | Для теми 3DS, нижня фонова текстура, коли не наведено вказівник на піктограму на DS Phat/Lite | ### Фонові текстури (тека `background`) Це мають бути файли у форматі PNG. Прозорість підтримується, однак працюватиме лише 100% прозорість. | Текстури | Опис/Примітки | | ------------------ | -------------------------------------------------------------------------------------------------------- | | battery0 | Блимає з текстурою `battery1`, коли батарея дуже розряджена | | battery1 | 0-4 використовуються в режимі DSi | | battery1purple | Фіолетові іконки використовуються, коли `Колір LED живлення` встановлено на `Фіолетовий` у налаштуваннях | | battery2 | | | battery2purple | | | battery3 | | | battery3purple | | | battery4 | | | battery4purple | | | batterycharge | | | batterychargeblink | Блимає з `batterycharge` під час заряджання | | batteryfull | Використовується в режимі DS на DSi/3DS | | batteryfullDS | Використовується на DS Phat/DS Lite | | batterylow | Використовується в режимі DS | ### Фонові текстури (`background` folder) Це повинні бути 4 BPP (16 кольорів) BMP-файли. Щоб відредагувати їх у GIMP, виберіть `Image` -> `Mode` -> `RGB`, щоб дозволити зміну кольорів, а потім, коли ви закінчите зміну кольорів, виберіть `Image` -> `Mode` -> `Indexed...`, щоб перетворити назад у палітру. При переході на індексований формат, переконайтеся, що для `Generate optimum palette` встановлено прапорець і `Maximum number of colors` встановлена на `16`. **Примітка:** Деякі зображення в темі DSi мають перевизначення палітри на основі кольору профілю користувача. Якщо ви редагуєте ці кольори, переконайтеся, що опція `UserPalette` для них у `theme.ini` має значення `0`. Після перетворення в індексований, перейдіть до діалогового вікна мапи кольорів і переконайтеся, що прозорий колір (#FF00FF) є кольором #0 у мапі кольорів. Якщо це не так, клацніть правою кнопкою миші на колірній карті та виберіть `Rearrange Colormap...` потім перемістіть прозорий колір, щоб він став першим кольором у колірній карті, та виберіть `ОК`. Якщо у вашій остаточній колірній карті менш як 16 кольорів, натискайте кнопки `+` внизу діалогового вікна колірної карти, доки не отримаєте 16 кольорів. Під час експорту рекомендується встановити прапорець `Do not write color space information` у списку `Compatibility Options`. | Текстури | Опис | | ------------- | -------------------------------------------------------------------------------------- | | bips | Точки, що блимають, які відображаються внизу смуги прокрутки (тема DSi) | | box | Текстура коробки, що містить як повні, так і порожні текстури (Тема DSi) | | box_empty | Текстура, що відображається для порожньої коробки (Тема 3DS) | | box_full | Текстура, що відображається для порожньої коробки (Тема 3DS) | | brace | Текстура дужок, показана за першою та останньою піктограмою (Тема DSi) | | bubble | Нижній біт бульбашки, що накладається на початкову межу або поле піктограми | | button_arrow | Текстури для стрілок з обох боків нижньої смуги прокрутки (тема DSi) | | cornerbutton | Кнопки, які показуються в меню SELECT (Тема DSi) (Назва базується за старим вживанням) | | cursor | Межа з анімацією, яка вкаже на вибрану іконку (тема 3DS) | | dialogbox | Тло діалогового вікна, що зсувається вниз | | folder | Піктограма для тек | | icon_a26 | Іконка для ігор Atari 2600 | | icon_col | Іконка для ігор Colecovision | | icon_gb | The icon for Game Boy games | | icon_gba | The icon for GBA games | | icon_gbamode | The icon for native GBA Mode | | icon_gg | The icon for Game Gear games | | icon_img | The icon for BMP, GIF, and PNG images | | icon_int | The icon for Intellivision games | | icon_m5 | The icon for Sord M5 games | | icon_manual | The icon for the manual | | icon_md | The icon for Mega Drive games | | icon_nes | The icon for NES games | | icon_ngp | The icon for Neo Geo Pocket games | | icon_pce | The icon for PC Engine/TurboGrafx-16 games | | icon_plg | The icon for DSTWO plugins | | icon_settings | The icon for Nintendo DSi Settings | | icon_sg | The icon for Sega SG-1000 games | | icon_sms | The icon for Sega Master System games | | icon_snes | The icon for SNES games | | icon_unk | The icon displayed when a game is missing an icon | | icon_ws | The icon for WonderSwan games | | launch_dot | The dots displayed when a game is launched (DSi Theme) | | moving_arrow | The arrow displayed when a game is being moved (DSi Theme) | | progress | The progress loading animation with 8 frames | | scroll_window | The part of the scrollbar that indicates the icons that are in view | | small_cart | The icons displayed along the top (3DS Theme) and in the SELECT menu (DSi Theme) | | start_border | The border with animation frames that indicates the selected icon (DSi Theme) | | start_text | The text displayed on the start border (DSi Theme) | | wirelessicons | The icons displayed to indicate a game has wireless support | ### DS Classic Menu textures (`quickmenu` folder) These must be PNG files. | Текстури | Опис | | ---------- | --------------------------------------------------- | | bottombg | Background for the bottom screen | | phat_topbg | Background for the top screen on DS Phat | | topbg | Background for the top screen on any other DS model | ### UI textures (`ui` folder) These must be PNG files. Прозорість підтримується, однак працюватиме лише 100% прозорість. Any pixel that is transparent in one texture should be transparent in all of them, so that it's properly overwritten on change. | Текстури | Опис | | ------------------------ | ---------------------------------------------------------------- | | Lshoulder | The left shoulder | | Lshoulder_greyed | The left shoulder when there are no pages to the left | | Lshoulder_photo | The left shoulder when there is a photo being shown | | Lshoulder_photo_greyed | The left shoulder with no pages to the left and a photo showing | | Rshoulder | The right shoulder | | Rshoulder_greyed | The right shoulder when there are no pages to the right | | Rshoulder_photo | The right shoulder when there is a photo being shown | | Rshoulder_photo_greyed | The right shoulder with no pages to the left and a photo showing | ### 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](https://github.com/RocketRobz/Vid2RVID/wiki/Converting-a-video-to-.rvid) on the Vid2RVID wiki. If you don't want this to be drawn you can simply delete it. ### Volume textures (`volume` folder) Volume textures are only displayed in DSi Mode. These must be PNG files. Прозорість підтримується, однак працюватиме лише 100% прозорість. | Текстури | Опис/Примітки | | -------- | ---------------------------- | | volume0 | 0 is muted, 4 is full 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. Options with a blank default value for a theme are unused in that theme. | Value | Опис/Примітки | Default (3DS) | Default (DSi) | | -------------------------- | ------------------------------------------------------------------------------------------------------------------------------- | ------------- | ------------- | | `StartBorderRenderY` | The initial Y position of the Start Border | 92 | 81 | | `StartBorderSpriteW` | The width of the start border sprite. Note that the start border texture is exactly half of the full border | 32 | 32 | | `StartBorderSpriteH` | The height of the start border sprite | 64 | 80 | | `StartTextRenderY` | The initial Y position of the Start text | 143 | 143 | | `BubbleTipRenderX` | The X position of the tip of the bubble that is drawn over the start border | 125 | 122 | | `BubbleTipRenderY` | The Y position of the tip of the bubble that is drawn over the start border | 98 | 80 | | `BubbleTipSpriteW` | The width of the bubble tip sprite | 7 | 11 | | `BubbleTipSpriteH` | The height of the bubble tip sprite | 7 | 8 | | `TitleboxRenderY` | The initial Y position of the title text box | 96 | 85 | | `TitleboxTextY` | The initial Y position of the title text | 55 | 30 | | `TitleboxTextW` | The maximum width of the title text | 200 | 240 | | `TitleboxTextLarge` | Whether to use the large font for the title text | 0 | 1 | | `TitleboxMaxLines` | The maximum lines of text to show of the title | 3 | 4 | | `VolumeRenderX` | The X position on the top screen to draw the volume icon | 4 | 4 | | `VolumeRenderY` | The Y position on the top screen to draw the volume icon | 5 | 5 | | `ShoulderLRenderX` | The X position on the top screen to draw the left shoulder | 0 | 0 | | `ShoulderLRenderY` | The Y position on the top screen to draw the left shoulder | 172 | 172 | | `ShoulderRRenderX` | The X position on the top screen to draw the right shoulder | 178 | 178 | | `ShoulderRRenderY` | The Y position on the top screen to draw the right shoulder | 172 | 172 | | `BatteryRenderX` | The X position on the top screen to draw the battery icon | 235 | 235 | | `BatteryRenderY` | The Y position on the top screen to draw the battery icon | 5 | 5 | | `UsernameRenderX` | The X position on the top screen to draw the username text | 28 | 28 | | `UsernameRenderY` | The Y position on the top screen to draw the username text | 15 | 15 | | `UsernameRenderXDS` | The X position on the top screen to draw the username text, when on a DS Phat/Lite | 4 | 4 | | `DateRenderX` | The X postion on the top screen to draw the date text | 162 | 162 | | `DateRenderY` | The Y postion on the top screen to draw the date text | 7 | 7 | | `TimeRenderX` | The X positon on the top screen to draw the time text | 200 | 200 | | `TimeRenderY` | The Y positon 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` | The transparent color of the font, unused for default fonts | 0x0000 | 0x0000 | | `FontPalette2` | The colors of the font, use [this site](http://www.conradshome.com/html2bgr15/) to convert | 0xDEF7 | 0xDEF7 | | `FontPalette3` | | 0xC631 | 0xC631 | | `FontPalette4` | | 0xA108 | 0xA108 | | `FontPaletteDateTime1` | The override transparent color of the font for the date and time | 0x0000 | 0x0000 | | `FontPaletteDateTime2` | The override color of the font for the date and time | 0xDEF7 | 0xA529 | | `FontPaletteDateTime3` | | 0xC631 | 0xBDEF | | `FontPaletteDateTime4` | | 0xA108 | 0xD6B5 | | `FontPaletteTitlebox1` | The override transparent color of the font for the ROM title box | 0x0000 | 0x0000 | | `FontPaletteTitlebox2` | The override color of the font for the ROM title box | 0xDEF7 | 0xDEF7 | | `FontPaletteTitlebox3` | | 0xC631 | 0xC631 | | `FontPaletteTitlebox4` | | 0xA108 | 0xA108 | | `FontPaletteDialog1` | The override transparent color of the font for dialogs | 0x0000 | 0x0000 | | `FontPaletteDialog2` | The override color of the font for dialogs | 0xDEF7 | 0xDEF7 | | `FontPaletteDialog3` | | 0xC631 | 0xC631 | | `FontPaletteDialog4` | | 0xA108 | 0xA108 | | `FontPaletteOverlay1` | The override transparent color of the font for overlayed text | 0x0000 | 0x0000 | | `FontPaletteOverlay2` | The override color of the font for overlayed text | 0xDEF7 | 0xDEF7 | | `FontPaletteOverlay3` | | 0xC631 | 0xC631 | | `FontPaletteOverlay4` | | 0xA108 | 0xA108 | | `FontPaletteUsername1` | The override transparent color of the font for the username | 0x0000 | 0x0000 | | `FontPaletteUsername2` | The override color of the font for the username | 0xDEF7 | 0xDEF7 | | `FontPaletteUsername3` | | 0xC631 | 0xC631 | | `FontPaletteUsername4` | | 0xA108 | 0xA108 | | `BipsUserPalette` | Whether or not to use the DS Profile color for the palette of the bips on the scrollbar | | 0 | | `BoxUserPalette` | Whether or not to use the DS Profile color for the palette of the boxes containing the game icons in the DSi Theme | | 0 | | `BoxEmptyUserPalette` | Whether or not to use the DS Profile color for the palette of empty boxes in the 3DS Theme | 0 | | | `BoxFullUserPalette` | Whether or not to use the DS Profile color for the palette of the boxes containing the game icons in the 3DS Theme | 0 | | | `BraceUserPalette` | Whether or not to use the DS Profile color for the palette of the brace at the start and end of the game list | | 0 | | `BubbleUserPalette` | Whether or not to use the DS Profile color for the palette of the tip of the title bubble | 0 | 0 | | `ButtonArrowUserPalette` | Whether or not to use the DS Profile color for the palette of the arrow buttons on the bottom of the screen | | 1 | | `CornerButtonUserPalette` | Whether or not to use the DS Profile color for the palette of the DSi Menu and Settings icons in the SELECT menu | | 0 | | `CursorUserPalette` | Whether or not to use the DS Profile color for the palette of the cursor | 0 | | | `DialogBoxUserPalette` | Whether or not to use the DS Profile color for the palette of the dialog box | 0 | 1 | | `FolderUserPalette` | Whether or not to use the DS Profile color for the palette of folders | 0 | 0 | | `LaunchDotsUserPalette` | Whether or not to use the DS Profile color for the palette of the launch dots | | 1 | | `MovingArrowUserPalette` | Whether or not to use the DS Profile color for the palette of the arrow shown when moving icons | | 1 | | `ProgressUserPalette` | Whether or not to use the DS Profile color for the palette of the loading progress spinner | 1 | 1 | | `ScrollWindowUserPalette` | Whether or not to use the DS Profile color for the palette of the background to the scroll window on the scrollbar | | 0 | | `SmallCartUserPalette` | Whether or not to use the DS Profile color for the palette of the cartridge icons | 0 | 0 | | `StartBorderUserPalette` | Whether or not to use the DS Profile color for the palette of the start border | | 1 | | `StartTextUserPalette` | Whether or not to use the DS Profile color for the palette of the start text | | 1 | | `WirelessIconsUserPalette` | Whether or not to use the DS Profile color for the palette of the wireless icons | 0 | 0 | | `IconA26UserPalette` | Whether or not to use the DS Profile color for the palette of the Atari 2600 icon | 0 | 0 | | `IconCOLUserPalette` | Whether or not to use the DS Profile color for the palette of the ColecoVision icon | 0 | 0 | | `IconGBUserPalette` | Whether or not to use the DS Profile color for the palette of the Game Boy icon | 0 | 0 | | `IconGBAUserPalette` | Whether or not to use the DS Profile color for the palette of the Game Boy Advance icon | 0 | 0 | | `IconGBAModeUserPalette` | Whether or not to use the DS Profile color for the palette of the native GBA Mode icon | 0 | 0 | | `IconGGUserPalette` | Whether or not to use the DS Profile color for the palette of the Game Gear icon | 0 | 0 | | `IconIMGUserPalette` | Whether or not to use the DS Profile color for the palette of the image icon | 0 | 0 | | `IconINTUserPalette` | Whether or not to use the DS Profile color for the palette of the Intellivision icon | 0 | 0 | | `IconM5UserPalette` | Whether or not to use the DS Profile color for the palette of the Sord M5 icon | 0 | 0 | | `IconManualUserPalette` | Whether or not to use the DS Profile color for the palette of the manual icon | 0 | 0 | | `IconMDUserPalette` | Whether or not to use the DS Profile color for the palette of the Genesis/Mega Drive icon | 0 | 0 | | `IconNESUserPalette` | Whether or not to use the DS Profile color for the palette of the NES/Famicom icon | 0 | 0 | | `IconNGPUserPalette` | Whether or not to use the DS Profile color for the palette of the Neo Geo Pocket icon | 0 | 0 | | `IconPCEUserPalette` | Whether or not to use the DS Profile color for the palette of the PC Engine/TurboGrafx-16 icon | 0 | 0 | | `IconPLGUserPalette` | Whether or not to use the DS Profile color for the palette of the DSTWO plugin icon | 0 | 0 | | `IconSettingsUserPalette` | Whether or not to use the DS Profile color for the palette of the DSi Settings icon | 0 | 0 | | `IconSGUserPalette` | Whether or not to use the DS Profile color for the palette of the SG-1000 icon | 0 | 0 | | `IconSMSUserPalette` | Whether or not to use the DS Profile color for the palette of the Master System icon | 0 | 0 | | `IconSNESUserPalette` | Whether or not to use the DS Profile color for the palette of the SNES icon | 0 | 0 | | `IconUnknownUserPalette` | Whether or not to use the DS Profile color for the palette of the unknown (missing) icon | 0 | 0 | | `IconWSUserPalette` | Whether or not to use the DS Profile color for the palette of the WonderSwan icon | 0 | 0 | | `UsernameUserPalette` | Whether or not to use the DS Profile color for the palette of the username | 1 | 1 | | `ProgressBarUserPalette` | Whether or not to use the DS Profile color as the color of the progress bar | 1 | 1 | | `ProgressBarColor` | The color of the progress bar if `ProgressBarUserPalette` is disabled | 0x7C00 | 0x7C00 | | `UseAlphaBlend` | Whether or not to blend the colors of the top screen text (the date/time and username) with the colors of the background | 1 | 1 | | `DarkLoading` | Whether or not to fade to black instead of white during loading screens | 0 | 0 | | `RenderPhoto` | Whether or not to draw a photo on the top screen | 0 | 1 | | `RotatingCubesRenderY` | The Y position on the top screen to draw the rotating cubes | 78 | | | `PlayStartupJingle` | Whether or not to use the startup sound before the main BGM. See the [custom SFX](custom-dsi-3ds-sfx) page for more information | 1 | 0 | | `StartupJingleDelayAdjust` | The amount of samples early in the startup sound the BGM should start at | 0 | 0 | ### Параметри режиму Macro Ви можете додати певні параметри перевизначення до файлу `theme.ini` для використання у режимі Macro. Для цього додайте `[MACRO]` в порожній рядок внизу конфігураційного файлу, а потім додайте будь-які вказані конфігурації під ним. ## Спеціальна фонова музика та звукові ефекти Теми DSi та 3DS також підтримують користувацьку музику. Подивіться [DSi/3DS скіни - Користувацькі ефекти](custom-dsi-3ds-sfx) для більш детальної інформації. ## Користувацькі шрифти Ви можете покласти [Користувацькі шрифти](custom-fonts) до теки `font` для використання у скіні. Ви також можете додати перевизначення шрифтів для дати & часу за допомогою `date_time.nftr`, та імені користувача консолі за допомогою `username.nftr`. ## Користувацькі палітри Для палітрових текстур (тека `grf`) ви можете додатково додати набори палітр, які використовуються, коли увімкнено відповідний параметр `UserPalette`. Файли наборів палітр можна створювати за допомогою [цього редактора](https://skinpaltool.dvdo.dev/). Використовуючи редактор, імпортуйте зображення, з яким ви хочете працювати, а потім створіть палітру для кожного з 16 кольорів профілю DS. Ви можете використати цей [приклад файлу палітри](/assets/files/example-palette.bin) як початкову точку. 16 рядів колекції палітри відповідають кожному кольору профілю та повинні бути в наступному порядку: 1. Сіро-блакитний 2. Коричневий 3. Червоний 4. Рожевий 5. Помаранчевий 6. Жовтий 7. Світло-зелений 8. Зелений 9. Темно-зелений 10. Бірюзовий 11. Блакитний/Світло-блакитний 12. Синій 13. Темно-синій/Індиго 14. Фіалковий/Темно-фіолетовий 15. Фіолетовий 16. Пурпуровий Створивши файл палітри, помістіть його до теки `palettes`. Ім'я файлу палітри має збігатися з ім'ям її зображення, але з розширенням `.bin` (наприклад, `start_border.bin` буде застосовано до `start_border.bmp`). Ви також можете додати файл палітри `username.bin` для зміни палітри шрифту імені користувача. Під час створення цього файлу обов'язково встановіть у редакторі палітри `Font Mode`. ## Частина 3: Додавання до TWiLight Menu++ Після того, як ви відредагували текстури та хочете протестувати свою скіну, просто скопіюйте папку зі своєю скіною (теку, що містить `background`, `battery` тощо) до `sd:/_nds/TWiLightMenu/3dsmenu/themes/` або `sd:/_nds/TWiLightMenu/dsimenu/themes/` для скінів тем для 3DS/DSi відповідно. ## Частина 4: Поширення свого скіну Завершивши роботу над скіном, ви можете поділитися ним зі спільнотою, створивши запит щодо додавання скіну до репозиторію [DS-Homebrew/twlmenu-extras](https://github.com/DS-Homebrew/twlmenu-extras) GitHub у вигляді файлу `.7z`. Якщо ви не знайомі з git'ом, ви також можете просто створити питання в цьому репозиторії з zip файлом вашого скіна з проханням про його додавання.