Homebrew DS Skin Maker

  • Thread starter Thread starter Stormwave
  • Start date Start date
  • Views Views 53,679
  • Replies Replies 103
  • Likes Likes 3

Stormwave

Well-Known Member
Member
Joined
Apr 22, 2010
Messages
237
Reaction score
21
Trophies
1
Website
Visit site
XP
242
Country
DS Skin Maker 0.48 has now been released!

With support for:
- AKAIO - (8 preview screens)
- CycloDS - (5 preview screens)
- DSision
- DSision 2
- DSOne EOS
- DSTT/TTDS - (3 preview screen)
- DSTwo - (23 preview screens)
- M3 Kaura - (6 preview screens)
- M3 Sakura - (20 preview screens)
- M3 TouchPod - (7 preview screens)
- Moonshell 2 - (23 preview screens)
- R4 - (4 preview screens)
- Wood
- YSMenu (1 preview screen)

Download DS Skin Maker 0.48

In the case of the Moonshell 2, and the M3 skins, the program fully supports extracting and compiling SKN files. Now you can extract Moonshell2 skins
smile.gif


Although it fully (hopefully) supports all of those firmwares, I've yet to add Preview pages to many of them. This is something I will be developing before adding any new firmwares/programs. If anyone would like to help with the production of these Preview pages, it would be an enormous help. Read the following information for help on creating Preview pages:

Preview tips

The Preview pages are stored in XML files, with the same filename (except for extension) as the plugins themselves. They are located in the "Plugins" folder. I have included a few minor Preview XML files as examples of how to use them. Please note that the XML files are case-sensitive, so use the examples for a guide to the exact commands. Currently included are the following commands:

with parameters "X", "Y" and "Source"
with parameters "Source", "SourceRect" and "DestRect" declaring two rectangles. Consult M3 Sakura.xml for an example.
with parameters "Source", "X", "Y", "Index" and "Height". This is used primarily for the font images that many skins use. It will crop the image
based on the given Height*Index. Consult M3 Sakura.xml for example.
with paramerers "X", "Y", "Width", "Height" and "Source"
with parameters "X", "Y", "Width", "Height" and "Source"
with parameter "Rect". This emulates the R4's highlight flashing.
with parameters "Text", "Color", "X" and "Y". Color must point to a INI file reference. See M3 Sakura.xml for an example.
with parameters "Format", "Color", "X" and "Y". Format represents a DateString format according the .NET specification. See CycloDS.xml for example.
with parameters "X", "Y", "Screen" and "ItemHeight". The "ItemHeight" parameter can be overridden by a child node.
with parameters "X", "Y", "Screen" and "ItemWidth". The "ItemWidth" parameter can be overridden by a child node.
with parameters "Rect", "Color" and "FillColor". Optional parameters "Alpha" and "FillAlpha" (0-255)
with parameter "Rect". Inverts the given screens image in the provided rect.
with parameters "Name" and "Size"
with parameters "Name" and "Mode". Allows switching of Preview modes based on the given button. Name can be "A", "B", "X", "Y", "Start", "Select", "Up", "Down", "Left" or "Right". Mode must represent the Xml Node Name, and not the "Name" attribute. See "M3 Sakura.xml" for usage.
with parameters "Rect" and "Mode". Adds a hitzone to the bottom screen to allow switching of Preview Modes. New parameter "MouseOver", if set to "1" will trigger the HitZone on MouseOver rather than a Click
with parameter "Test" where Test is a simple condition test, for example "big_clock.show==1". The only conditions possible atm are == and !=

All commands have the "Screen" parameter that should be 0 for the top screen, or 1 for the bottom screen.
The "Source" parameter should point to an image within the skin (without the extension)
All Image commands have an optional "TransparentColor" parameter. This should be a 24-bit color represented as 6 hexadecimal characters (e.g. 0xFF00FF)
All Image commands have an optional "MinTransparentColor" parameter. If this is entered, the transparent color will range from MinTransparentColor-TransparentColor
All child nodes of "HorizontalList" or "VerticalList" have an optional "OffsetX" or "OffsetY" parameters.
Settings ItemHeight or ItemWidth to 0 on a VerticalList or HorizontalList will automatically align based on image size. This will not work for String or Rect nodes, only image nodes.
All nodes have an optional "Rotate" parameter. This will rotate the current plain by the given degrees, and then revert the rotation back upon finishing the command.

Just one word of warning when using multiple Inherits, seperate them by ","s but make sure there is no white-space. (e.g. Inherits="MainMenu, TitleBar, Clock" don't work, Inherits="MainMenu,TitleBar,Clock" will work).

If you wish to render an alternate Preview before a new Preview, you can use the "Inherits" tag. See the "M3 Sakura.xml" for details.

Also note that you do not need to reset the program if you alter a preview XML, the program will refresh it automatically the next time you open the "Preview" menu from that firmware.

I'm sure more commands will probably be needed in the future, feel free to request any commands.

If you wish to contribute a Preview file to the project, please upload it and link it here.

Changelog

Changelog version 0.48:

- Changed wood logo (thanks jurrasicplayer)
- Added YSMenu preview (thanks CannonFoddr)
- Added DSTwo "Real-Time Menu" mode
- Updated DSTwo previews
- Greatly improved the quality when the program drops bit depth from 24-bit or 32-bit bitmaps down to 16-bit.

Changelog version 0.47:

- Fixed a critical bug that was preventing Moonshell2 skins from saving correctly.

Changelog version 0.46:

- Improved the DSTwo previews, should be very accurate now
- Fixed several bugs
- Added the ability to stack "Inherits"
- Added the ability to define multiple "Inherits" (e.g. Inherits="MainMenu,TitleBar,Clock")

Changelog version 0.45:

- Added an "If" command to the previews, used primarily for DSTwo previews
- Added the ability to check an images height in the previews (e.g. image_name.Height). This fixes the clock problem in the DSTwo previews
- Amended CannonFoddr's DSTwo previews to allow for the new features

Changelog version 0.44:

- Added 13 preview pages (5 unique) to the DSTwo -> NDS GBA mode
- Added 1 preview (only 1 needed) for the DSTwo -> Plugins mode
- Added an "Alpha" setting to the ImageStretch preview command
- Fixed a few bugs

Changelog version 0.43:

- Added two new modes to DSTwo (Plugins and NDSGBA)
- Fixed several bugs to do with switching modes
- Added an optional "Mode" tag to preview pages, to allow seperate previews per mode

Changelog version 0.42:

- Added "Save All Previews" options to save all of the preview screens as PNG, BMP or JPG.
- Fixed a critical bug that was preventing importing Moonshell2 and Sakura skin files.
- The skin menu will now automatically minimize upon selecting an item

Changelog version 0.41:

- Added two more TTDS pages.
- Added CannonFoddr's most recent AKAIO.xml
- Added the ability to switch previews within a preview window (right click inside the preview window to open the menu)
- Added the ability to save the preview screens as BMP, JPG or PNG.
- Added the ability to save all preview screens as an animated GIF (accessible via the context menu inside a preview window).
- Added an optional backup option before patching DSGAME.nds when editting DSTwo Loading Screens

Changelog version 0.4:

- Added "InvertRect" Preview command (see "M3 TouchPod.xml" for usage)
- Renamed a few incorrectly labelled nodes in Moonshell2 and M3 Sakura
- Added TouchPod Previews (7 pages)
- Added CycloDS Previews (5 pages)
- Added main DSTT Preview (more to come in the near future)
- Added a "MouseOver" parameter to the "HitZone" command. See the "CycloDS.xml" for an advanced example of this. Very handy for rollovers.
- Added a "DateString" command. Similar to the String command but requires a "Format" parameter instead of "Text". Formats the currecnt time based on the given format. (e.g. "HH:mm:ss", see "CycloDS.xml" for usage
- Fixed several bugs
- Added DSTwo Loading Screen changed. Just go to the DSTwo skin maker, and goto Tools->Modify Loading Screen.
- Removed the size restriction, changed to a warning instead.
- Removed the requirement for all files to be added before "Saving". Added a warning instead. Moonshell2, M3 Sakura and M3 Kaura skins will not work unless all files have been added!
- Maybe more stuff I've forgotten
 
Wow Stormwave - you are a busy little bee - what with this & 'TextDS2'

Well I can only give a couple of suggestions - & only because I have those cards - & those are

'Acekard/AKAIO' and 'DSTwo' - although you'll won't be able to access them with your card

The AKEdit program is getting on a bit & does have a few 'quirks' and there isn't one for the DSTwo (yet) - although it may be a bit difficult for the DSTwo as there's really something like 3-4 different 'skins' involved (although the one for 'DS_Game' is very similar to Acekard skins- just named differently)

Out of curiosity - what are you using to program your Skin maker. (I bet it's C++)

I'm afraid I'm not really a programmer although I have been 'playing' with #Develop (using Visual basic/VB.net mainly) on-&-off (on a USB for portability), but being 'self-taught' it's really an uphill battle
 
It supported importing (decompiling) Moonshell2 skins into Sakura mode, which ignored Moonshell2 only files, but not previewing or compiling Moonshell2 skins.

QUOTE said:
Out of curiosity - what are you using to program your Skin maker. (I bet it's C++)

My M3 Skin Maker is programmed in C#, I've never really been a big fan of C++. You're welcome to have a crack at it if you feel up for it, I can help out with most things it's only the previewing that I'd be unable to program (not having a reference to work with). I'm self-taught myself, although many years of it hehe, so good luck getting into it. Any of the .NET languages are a great place to start.
 
Gah xD! People that actually know how to program stuff can best me any time, curses my lack of coding knowledge. Anyways, you could always add support for acekard skins (I believe WoodR4 is viewable with an M3iZero, but I don't think it can do anything really, even if it can load up), ysmenu skins (same as the WoodR4 in terms of use), R4 skins (have to swap to R4iRTS...somewhere in the M3 stickies), iTouchDS skins (same as R4iRTS...but you need to get a fairly older version of the iTouchDS firmware), cyclods skins (extremely similar to R4 skins), touchpod skins, skins for your new TextDS (when you add skinning support)...and maybe DSOrganize skins as well...and ComicbookDS...I can't think of anything else at the moment.

-edit-
Oh snap xD I totally didn't remember DSCovered...even though I had the thread opened as well, but now that spinal_cord has reminded me, you could probably also have skinning support for Dsision and Dsision2 as well.
 
Hmm - I've just had a thought
- I've been looking through #Develop & I've found an option when I looked at one of my (very few) attempted vb.net projects (a 16bit Hex to 24bit RGB convertor - FYI) that has 'Convert vb.net to c#/python/boo'... & it got me thinking.....If I had some C# source code - would I get a 'Convert c# to vb.net' option ??

If so I could take Stormwave's C# , convert it to VB.net (a language that I'm a little more familiar with) and perhaps figure out some coding/modules etc for Acekard or DSTwo skins

I can't promise anything - since I work full time shift work, and only a 'beginner' in programming (& I'm over 40) - but who knows ???
1r6zav.jpg
 
At the minute the program isn't particularly modular, so translating to and from languages could be fiddly. What I might do, however, is create a plugin system for the program. That way you could make Acekard and DSTwo plugins in VB .NET if you so wished. It would make it much easier for yourself, and anyone else, to expand it. It'll take me a couple of days to change the way it all works and make an SDK, so I'll post back about it when I'm done.

I could also program all the plugins myself, but keep the Preview data as external XML files, so they can be created or editted by anyone (since previewing is the only part I wouldn't be able to do).
 
Stormwave said:
What I might do, however, is create a plugin system for the program. That way you could make Acekard and DSTwo plugins in VB .NET if you so wished. .
Whoaa - 'Plugins' - I'm still stuggling with 'global modules' in VB.net
laugh.gif


Think I'll stick with struggling with my problems first
 
Hehe, fair enough.

I think I'm going to start fresh on the program using a plugin/XML based system. With the XML files being used for the Preview pages. It'll take at least a few days, but once done it'll be much easier for myself (and other people) to update it, particularly in making the Preview XML files.
 
I've uploaded the first version of this program
smile.gif


Consider it a very early alpha release. It's not finished by any means. View the first post for updated details. If you wish to contribute it would be greatly appreciated and full recognition of all contributors will be provided.

I'll continue working on the Preview pages on my own aswell, so expect considerably more in the near future.
 
FYI - I'll have a stab @ making the DSTwo.xml for you

EDIT: Just found a small 'glitch'... On DSTwo bright green is used as a transparent colour on some graphics.
When placing them onto the preview - that's what we get.. a nice bright green square background to the icon

IIRC on AKAIO skins the transparent colour is 'Pure Black', so we'll need something added to the XML to say what colour is 'transparent' or IF the graphic HAS a transparent colour - as a suggestion perhaps something like

QUOTE said:
'the colour Pure Black is to be treated as a transparent colour'


This graphics does NOT have any transparent colour
 
Good idea, I'll add that in. Thanks for informing me. I'm sure there'll be lots of little things like that that need adjusting, it's hard, since I can't test most of these out, to know that on my side (although I shoudl have realised looking at the images, heh) I'll add a transparent colour option to the XML files.

That would be great if you could make the DSTwo.xml
biggrin.gif
 
Okay, updated to 0.1a. The new "TransparentColor" parameter should do exactly as you want
smile.gif


*EDIT*

I added some tips on how to use it in the first post. It is optional, so if you leave it blank, no transparent colour is presumed.
 
Sorry to be a nuisance but found another 'quirk' (or two) - especially with the DStwo Clock settings

We can set up the first digit of the clock by using
but no way of setting the other numbers of the clock in relationship to the first number - We have to define it 'exactly' e.g. 'big_clock.x=189'

I'm not telling you how to program but perhaps another command could be made that when used will use 2 graphic sources ('clock_numbers' and 'clock_colon') that will do all the numbers/colon positioning in one go

e.g.
 
Thanks for the work you've done so far CannonFoddr. I really appreciate it
smile.gif


Oddly the skin I was using when I added DSTwo support didn't have a form_R file, but I'll add that into the next version.

The only problem I have with your suggestion of a method to allow easier displaying of clocks is that the method you described would only really work with DSTwo skins. I want the program to work the same for every type of skin where possible, M3 Sakura for example has the colon image inside the font used for the numbers, aswell as the /s for dates etc. Dividing by 10 therefore would not accurately give the correct height, as there are 13 characters in those images.

Taking on board the idea however, I've come up with an idea that will help, but be more generalised. That would be a command that allows to load in multiple images and display a string of indices from those images. For example:



The following example would display 15:32:56. In the set of indices, the number preceeding the '.' would define the source, the succeeding number would be the index.

Would that be a good compromise? I'll probably put that in tomorrow.

Thanks for the suggestions, and thanks again for helping out.
 
Scratch that idea, I came up with a better one.

Just updated to version 0.1b!

I added "HorizontalList" and "VerticalList" to the Preview XML files. They basically override the X, Y and Screen parameters of all child nodes, and will increment the X or Y value based on the given ItemWidth or ItemHeight respectively. See the "M3 Sakura.xml" for details on how to use it properly.

I also added the "form_R" to the DSTwo skins.
 
Thanks for the update - the Horizontal/Vertical seems to work BUT (there's always a 'BUT') there's still a small problem
Don't know what's it like on other skins but on AKAIO/DSTwo the 'width' of the numbers+colon are not equal

The numbers are 32 wide while the colon is 10 wide - if I set it to '32' the whole clock is too wide for the 'box' it's suppose to show in (It also has a similar problem with the 'start menu'; the 'form_L' is a different width to 'form_m' which is again different to 'form_R').

Is there any way of having it check the width (or Height) of the graphic it loads in & work it out from that ???
If not could the 'width=' in the override the 'itemWidth' instead of the other way round ???

Also, another 'bug' found - I started trying to layout the 'text' on the top screen, & found there's a problem with the colours
Your DS Skin Maker shows a different colour in the main screen to that shown in the preview - which is different to what it should be
4664792920_79e791697a_b.jpg

Left= Colour it SHOULD be (orange-ish)
Middle= DS Skin maker 'Preview' colour (purple)
Right= DS Skin maker Main screen (Blue)

[oops sorry - I put the red ring around the wrong setting - it should've been around 'gameInfoTextColor'
CODE
 
Okay, new update added.

You can now override the ItemWidth or ItemHeight values individually per node, see the "M3 Sakura.xml" for details.

As for the colour problems you're having, the fuchsia colour I think is due to you not having added in the INI Heading part of the colour string. It should be "global_setting.gameInfoTextColor". As for the wrong colour being shown on the INI file, I presumed the DSTwo skins used RGB format, but I presume now that they must use BGR so I've swapped it round. Should be the correct colours now.
 
Firstly: Duh... Silly me forgetting the 'global_setting' part

Second: New updated DSTwo XML @ http://filetrip.net/f11671-DS-Skin-Maker-%...ML%29-0-1c.html

Bug: Still got DSTwo colour problem - it's now showing right colour on 'INI' listing screen - but wrong colour in 'Preview'

A Possible suggestion: Smaller 'buttons' on the 'DS Skin maker' (the one that lists all the supported 'skins') to maybe 3/4 the size overall or perhaps get it to 'auto minimise' once a button been pressed.

4664845445_1656ea3359.jpg
4664845521_4760a266c0.jpg


4664845559_80401eeb33.jpg
4664872657_6672d37948.jpg


4664845597_fd41248b04.jpg
4665470168_897480c44a.jpg
 

Site & Scene News

Popular threads in this forum