Utilizing XenonNDS Tools

The Guide to XenonNDS's Tools​
Worded by Jurassicplayer​
Introduction
So as none of you know, there was an amazing coder for the better part of a year who worked on various NDS tools as a hobby and used to be known as Xenon++. His research and work on the NDS side of things can be found with two links:

Info on various flashcarts and descriptions for his tools:
http://leafmoon.users.sourceforge.net/xenonnds/pukiwiki/

Where his tools are uploaded:
http://leafmoon.users.sourceforge.net/xenonnds/files/

Now, as some of his descriptions may be cryptic or you just don't have a clue as to what his stuff do, this guide is supposed to help and is going to tell you in someone easy to read English, as well as the various things that they can be put to use for. Don't expect a complete guide about every single little file that is available, because some of them don't pertain to NDS, some are older revisions of development libraries, and some I still haven't figured out what they are supposed to be used for. Many of his files also include the source code and might help you learn coding by a margin (at least...it did for me). Being one of the few people that can probably explain what most of the tools do, I've found many of them to be useful to varying degrees and I'm hoping it will help you all as well.

The Tools
-00dldipack.7z
Quite possibly the most EXTENSIVE compilation of the recent NDS flashcart DLDIs to date and is great if you manually DLDI-patch homebrew still or if you want pre-patch your homebrew before releasing it.

-akaio_fontcnv_rev2.7z
Some font converters that eventually outputs font compatible with AKAIO and WoodR4. The names of the files should provide enough information as to what is converted to what (ttc2ttf, otf2bdf, and finally bdftopcf). There is also a convert.bat included to convert otf, ttf, and ttc fonts to pcf without manually converting it yourself. Unlike the first revision, this revision doesn't require cygwin, meaning linux users don't need to set up cygwin to use it =).

-cfbench.7z
The source code of the compact flash benchmark tool by Damian Yerrick. There aren't any changes as far as I can tell and some of you are familiar with it already (benchmarks the read speeds of your microSD).

-devkitARM_r23b folder
Just an archive of the devkitARM revision 23b so people can set up the right environment to compile the r23 versions of the mshl2tools/mshl2pack.

-disarm.7z
An ARM CPU disassembler modified to fit his environment (I've never tried it) that supports Windows/Linux/OSX. It was originally from here.

-disr.7z
A R3000 CPU disassembler that supports Windows/Linux/OSX. It was originally from here. (btw it's for the PSP).

-ds2key.7z
A recompiled version of the DS2Key homebrew by Sypherce (source code revision 48). You can see the topic about it here.
DS2Key Project Page: http://code.google.com/p/ds2key/

-ds_arm9_crt0_legacy.s
A custom version of the crt0 needed to compile mshl2tools. What is crt0 you ask? I didn't know either, so here is the excerpt from wikipedia: "crt0 (also known as c0) is a set of execution startup routines compiled into a program which perform any initialization work required before calling the program's main function."

-dualSwan.7z
A recompiled version of the WonderSwan emulator for the DS by LiraNuna modified to comply with the DLDI standard (since it wasn't really around back in 2006...). In other words, the homebrew can be DLDI patched and can actually be used on regular flashcarts.

-favlauncher_main.c
Originally posted there because Xenon++ was showing me how to change the usual screen on his favlauncher to a custom image. Feel free to take a look and compare it to the original favlauncher and use it if you want (if you check out my youtube videos, you'll notice that I have a "loading screen" with anime character pictures before anything else boots...that is because I use favlauncher as my initial boot for practically all of my flashcarts and they all use the same images which I can change on whim =] ).

-gbaemu.7z
A recompiled test version of the GBA emulator by Ichifly. (I actually can't remember if anything was changed or not for this one).

-lib folder
Just a small archive of some older libwoopsi libraries (versions 0.99.5 and 0.99.6) that Xenon++ was playing with before leaving the scene. They are somewhat outdated now compared to the latest version thanks to the various contributions from Carpfish who made the widely know (to some people anyways xD) derivative of Moonshell2, known as Fishshell2.

-m3_ninetail.7z
The final release of the M3 Ninetail kernel compilation for the M3Real/M3iZero (I know what you are thinking, "probably doesn't support the stupid gmp z003 version", but surprise surprise Xenon++ actually came through for you guys as well...now don't you just hate those people that caused Xenon++ trouble?). The compilation contains the YSMenu, iTouch, Touchpod, WoodM3, Kaura, R4iRTS, M3Sakura, iSakuReal, and WAIO kernels as well as patched Touchpod and M3Sakura (iSakuReal).

-menudowood.7z
An outdated way of loading games using the Wood kernel while booting from the MENUdo homebrew by SoulAnger and team. It was used before YWG (maintainer of the Wood kernels) added autoRunLastRom. There shouldn't be any reason to use this whatsoever.

-mshl2pack_r23.7z / mshl2pack_r32.7z (revision number coincides with devkitARM used)
A small pack of recompiled extras that can go with Moonshell2 and includes the homebrew: CookingTimer, MorningTimer, DSMPlay, and Imgview (all with accompanying source code and the libfat that must be used). All of them have small little changes that fix up certain things (not REALLY noticeable things, but they are definitely just a little bit better than the original ones).

-mshl2tools(_internal)_r23_libelm/libfat.7z / mshl2tools(_internal)_r32_libelm/libfat.7z (revision number coincides with devkitARM used)
These have a LOT of the stuff that I will be talking about and the tools inside range from dumping the memory to a savbackup homebrew to even stripping the Master Boot Record from your microSD. The differences between internal and non-internal is that internal only has what is needed to run on your DS and is pre-placed in folders for your convenience whereas the non-internal has everything in their source code state that you can use to build your own derivative. As for the difference between libELM and libFAT versions, here is a somewhat short description under the assumption that you don't know what libFAT is: LibFAT is the standard library used for compiling homebrew for the NDS that require access to the microSD. Likewise, libELM is just another library for the Wii (though probably not used that much). How is that able to work if libELM is for the Wii, well both of them are just libraries and make it easier for the programmer to use simple commands that reference certain sections and places for whatever hardware they are run on and- yeah I have no clue, but the Wood kernels and AKAIO also use libELM as it is faster and has some other perks to it, BUT that means you also need to get those devkitPPC things as well as the regular devkitARM to compile those homebrew.

-mshl2tools_valkyria_libelm.7z / mshl2tools_valkyria_libfat.7z
Although it shares the name with the previous packages, there is only the reset_mse and xenofile source codes in this one (if you don't count the libraries and things needed to compile it) and it's separate because it uses a different custom library made by Xenon++ known as libValkyria (most of his other stuff use libPrism which is the main customized library he modified and used).

-mshlsimply folder
This folder contains an older version of dpgtools (the last version before the switch to Moonshell2 and the .dpg4 format), the development kit for moonshell plugins (and the source for the plugins), moonshell simply (a custom version of the latest moonshell1.71 that allows for ROM loading and using extlinks and has various other changes. I'd recommend a quick look through the changelog if you decide on swapping out the official one for this one and see if that is what you want), the images used for the moonshell simply splash animation, and an alternative one by me (I chose less blocky font).

-ndstool.exe
It's just a copy of the latest ndstool by DarkFader. For those that don't know what ndstool is, it's a DS rom tool for viewing header info, fix CRC, and extracting files from the DS filesystem. If you have ever used DSLazy, then you should know what ndstool can do (DSLazy is a GUI frontend for ndstool).

-nesDS_image.7z
An archive with the NesDS EX editions (versions 31-44), nesterDS, and a now outdated NesDS version (I believe it is the revision before Huiminghao combined the EX and original editions together). The neat part about this archive is that each edition also has the image version and when combined with the nesdswrap from the mshl2tools, you get a version of NesDS that has all of those versions available via hold button while booting (extended to fit the other versions xD). It's not particularly useful anymore since the merge of the EX and original versions, but it is definitely a neat piece of work.

-old folder
An archive for the older mshl2pack_r21 and mshl2tools_r21/r21_P01/r23_070g/r31_042/r32_070g.7z that are mainly just for viewing the source code, but to be somewhat specific, the mshl2pack_r21.7z is the original source which has libnds from source, the mshl2tools_r21_P01.7z has yslaunch and ysboot (both outdated), and the mshl2tools_r31_042 is the last version before Xenon++ changed to using libPrism.

-old_bin folder
An archive of older tools for the computer that have since been combined into a single multi-applet tool (xenobox) that have a variety of functions ranging from decompiling splash animations from Moonshell and Moonshell2, dldi patching, fatpatching, ips patching, encrypting and decrypting for the original R4's _DS_MENU.dat (based off of R4crypt, but this one is x2 or more faster than the original one), the M3 kernel tools (m3sakura_make, m3dec, etc.), and some other tools that may or may not help the average user.

-png2b15.7z
A pack of two converters that convert png images to .b15 format (this format is noticeably used for the theme images on Moonshell to optimize data space) and .ppm format (only supports 24bits, more information here).

-popsext004.7z
NDS wasn't the only thing Xenon++ played around with, and I'm sure that if you are savvy with PSP POPSLoader, then you have probably come across the POPSLoader Extractor at some point in time. What it does is simple enough, it extracts the .prx files needed for PSX support (POPSLoader) from the official firmwares and saves you the hassle of figuring out how to install them.

-R4 folder
An archive with a couple of R4 related things (most of them are just the .nds version of the kernel for the R4ls, a 1:1 clone of the original R4).

-snemulDS_extlink.7z
A modified version of snemulDS v0.5 (the last one available in the SVN) to allow extlink support. Unfortunately the actual v0.5 was unstable and that carries on to this extlink version (there is no key presses...so it's as if you were playing a game without a controller xD). Not particularly the most useful archive, but it is another example of how to add extlink support.

-tmp folder
A folder holding a small variety of files that Xenon++ passed to people that he was conversing with over a number of chats. The more useful files consist of the cygwin.7z, fishshell2_addon.7z (modified versions of some of the regular Moonshell2 addons to work on Fishshell2 correctly), kaura_JP932.ini (more accurate Japanese language file for Kaura), messages.932 (Japanese language file for Fishshell2), wooddumper.nds, and wooddumper_enc.nds though really, none of these are necessary to know about or required for anything.

-waio.7z
The original WAIO, unlike the variety of rip-offs across the net, which allows various flashcarts and flashcart clones use the Wood kernel (v1.25). The .nds files included can be split into the Wood UI and the Wood loaders. The Wood UI files are located in the /build/ folder and the Wood loaders are located in the /build/__rpg/ folder. The rest is obviously the source.

-woodrpg.7z
An archive of the last version of WoodRPG (v1.25) that was definitely under the GPL license (thus it's redistributable).

-xenobox.7z
A toolbox of applets for use on a computer that spans all of the small file patches, encrypting/decrypting, ROM trimming, etc. that are conveniently all linked together, with the source code available for each applet as well.

-xenobox_bin.7z
A small package that contains some sample pre-compiled/patched files together from a small number of the applets in Xenobox.

-ysm3_osx.tbz
A small archive for OSX users which contains a way to patch YSMenu for the M3 themselves. It has xenoips and dldipatch.

Specific Utilities In-Depth
-Mshl2tools
-Addons: Contains the latest Check disk homebrew by Moonlight (without the language check), a modified version with English, and a modified Voice Recorder.
Though most people don't use it, the checkdisk homebrew is actually a nifty little homebrew that checks your microSD for any potential problems, show how many files and what files are fragmented, benchmark the read/write speeds (unaffected by FAT type or clustersize, so it's just your disk/dldi's performance), and shows various information about your microSD that you would probably never need to know. The modified Voice Recorder just changes the way Moonshell2 is reloaded to fix the problem that some flashcarts have (this is just a fix for those that need to use the alternative moonshell2 loader). It boots to /moonalt.nds.

-ak2loader: It is an extlink that links to /ysmenu/akloader.nds which should be extracted using the AKExtract from YSMenu. This unfortunately doesn't work with any of the newer AKAIO revisions, so it has limited uses in terms of a commercial ROM loader unless you are aiming for more of the older games.

-akaioms2: An extlink that links to the file referenced in the inilink.ini (AKAIO) and passes on the cheat settings from ysmenu for AKAIO to use.

-akaioysl: Similar to the akaioms2, only it's not an extlink and is to be used like an akloader.nds for YSMenu.

-akysload: Similar to the ak2loader, only it's not an extlink and is to be used like an akloader.nds for YSMenu.

-arm7: A customized arm7 library to better work with libprism and includes several homebrew loaders.

-bootlib: A homebrew NDS loader library from Chishm and WinterMute that was meant only for loading homebrew correctly (as bootlib is under a GPL license, this is distributed as a boot.bin to avoid any issues with the GPL).

-dldi_ez5v2/dldi_mati: They are two DLDIs that can be compiled and use a table for CRC calculation instead of direct iteration (which speeds up things by about 1.5x faster).

-dldi_m3r4: Originally developed as a binary patch from Chishm's R4TF.dldi, it is now customized into being able to compile into various dldi (R4TF/M3DS/SCDS/TTIO/DEMO/iPLY/EX4TF).

-dldicaptor: A small homebrew that captures the dldi currently on the memory and saves it in a [dldi]_[flashcart].dldi.

-dlditest:

-dscoverloader:

-favlauncher/favlauncher_bl/favlauncher_ms:

-fwrecovery:

-iniclear:

-inilink:

-
-MAIO (Moonshell2-All-In-One)
-WAIO (Wood-All-In-One)
-YSWood (YSMenu Frontend with Wood Loader)
-YSAll (YSMenu-All)
-Xenobox
This will eventually explain a couple of the nifty things that you can do with certain NDS tools that Xenon++ has made. (ie. Multiboot like what I use, Xenofile, creating MAIO, etc.)

Building the Right Environment
-Currently Not Available-
This will eventually explain how to set up the correct environment so that you can have some fun trying out and compiling using the same stuff that Xenon++ did.

Other Things to Note
-akmenu4.nds: Homebrew can be booted as the default akmenu4.nds by adding LDFLAGS: -Wl, --section-start, .init=0x02000450 to the arm9 and -r9 0x02000450 to ndstool.
-Mshl2tools r23 versus mshl2tools r32: Aside from the obvious fact that r32 is an updated version (and thus recommended), mshl2tools r23 does not have support for slot2 devices.
-tgba.7z was just a simple recompile that isn't working.
-woodrpg.txt: It's an outdated suggestion from when the Wood kernel SVN was still open to everyone.

Credits
Kingdomblade - I shamelessly took the first bit of the formatting from the MS2 skinning guide due to a lack of wanting to do it myself.
Xenon++ - I wouldn't have anything to talk about with the stuff you have done.
Jurassicplayer - My sorry self is bringing you this guide because I think Xenon++'s stuff is dam useful.
Sifjar - For reminding me that Xenon++ also has some PSP stuff there as well (a small number).

-WIP-
More to come...
My school stuff is DONE, now it's solid hobby time =D!
 
  • Like
Reactions: MyDePain

Mantis41

Well-Known Member
Member
Joined
Jun 3, 2009
Messages
1,851
Trophies
0
Location
earth
XP
454
Country
United States
wtf.gif
Has Taiju allowed the release of his files, last thing I knew they were non-distributable.

I guess you made sure it was ok. I'm just suprised that's all.
 

Mantis41

Well-Known Member
Member
Joined
Jun 3, 2009
Messages
1,851
Trophies
0
Location
earth
XP
454
Country
United States
wacko.gif
Um...... Er......... Confused...............

Does that mean MAIO, WAIO and several other projects can be resurected?
 

jurassicplayer

Completionist Themer
OP
Member
Joined
Mar 7, 2009
Messages
4,483
Trophies
1
Location
Pantsuland
Website
www.youtube.com
XP
2,874
Country
United States
He allowed it to be released...well because he released it himself on the homebrew bounty rules thread. Obviously barely anyone caught it (not really the stuff that gets written down on the front page)...but you can see the post for yourself here.
Most (if not all) of these should be compliant with any of the licenses that they are under (I didn't go checking for all of that stuff, but meh they SHOULD be fine).

As for various projects being resurrected...well, he pretty much completely quit the NDS scene shortly after releasing his stuff...as in he doesn't even visit the #ezflash channel anymore TT-TT...so you shouldn't really expect any updates unless an aspiring homebrew dev wants to take a dive at it (Taiju also made some custom libraries...so yeah...). The projects CAN be updated and redistributed...but further updates are totally dependent on a third party now.

-edit-
So I just updated the first post. M3iZero users with the gmp z003 version, if you could do a little testing on the M3 ninetails, it would be a great help.
 

SifJar

Not a pirate
Member
Joined
Apr 4, 2009
Messages
6,022
Trophies
0
Website
Visit site
XP
1,175
Country
This thread is looking pretty useful. I hope you get round to detailing uses of the other files soon.

EDIT: You should maybe add that dsir.7z is PSP related, not NDS related...
 

Mantis41

Well-Known Member
Member
Joined
Jun 3, 2009
Messages
1,851
Trophies
0
Location
earth
XP
454
Country
United States
CannonFoddr said:
WHAT!!!! I can use Xenon++ Stuff again because he's (re)released it !?!?!?
Meaning I can re-use the 'nds.inilink.nds' file from the mshl2tools file ???

Quick - where's that backup of MAIO v3.04 !!!!!!!
I was wondering how long it would take you to catch on.
 

jurassicplayer

Completionist Themer
OP
Member
Joined
Mar 7, 2009
Messages
4,483
Trophies
1
Location
Pantsuland
Website
www.youtube.com
XP
2,874
Country
United States
Right, about that...I was planning on adding how that can be made as well...since the tools to do it are also in there xD...but meh, I have to get through the rest of the stuff before I start on anything else. Also, on that MAIO thing, it's not really a big deal, but you could recompile the nds.inilink.nds to not show the text that it usually does (and change the screen color as well) so that it isn't quite as...obvious as it usually is.
 

CannonFoddr

Regular GBATemp Lurker
Member
Joined
Sep 23, 2006
Messages
4,134
Trophies
1
Age
56
Location
Sitting by computer
Website
www.youtube.com
XP
1,285
Country
jurassicplayer said:
but you could recompile the nds.inilink.nds to not show the text that it usually does (and change the screen color as well) so that it isn't quite as...obvious as it usually is.
If I knew how to - I would...
wink2.gif


Guess we need an idiots step-by-step guide to how to install/setup the required files/programming tools and a How-to compile for something like this !!!
 

jurassicplayer

Completionist Themer
OP
Member
Joined
Mar 7, 2009
Messages
4,483
Trophies
1
Location
Pantsuland
Website
www.youtube.com
XP
2,874
Country
United States
Right...I need to add that stuff later too xD (if I still remember how to anyway...). Anyways, if you want to repack up MAIO or something, you can (here is the inilink.nds that I use, and as for the source, the favlauncher_main.c in Xenon++'s archive is what I used to compile it pretty much...minus the comments and _consolePrint stuff since you obviously aren't going to see them with a picture in the way). Quick note about the inilink, it uses the .bmp images "/moonshl2/extlink/topload.bmp" and "/moonshl2/extlink/bottomload.bmp" (doesn't matter what kind really...). No idea what happens when those images aren't present since I don't care about if those images were missing (I will never have them missing because I LIKE THEM xD).
 

Mantis41

Well-Known Member
Member
Joined
Jun 3, 2009
Messages
1,851
Trophies
0
Location
earth
XP
454
Country
United States
Thanks Juradsicplayer that inilink looks a lot better without the text. I didn't see any picture though, just a quick white screen before akIAO takes over. Still it's a lot better than the usual brownish screen with scrolling text.

Is there anyway to kill the text as moonshell loads?
 

SifJar

Not a pirate
Member
Joined
Apr 4, 2009
Messages
6,022
Trophies
0
Website
Visit site
XP
1,175
Country
With regards to the stuff with r23 and r32 versions; is the r23 versions there to support the cards that newer revisions of devkitARM killed support for (accidently)? (Some slot 2 cards don't work with newer devkitARM revisions, but I'm not sure of exact revision numbers...)
 

jurassicplayer

Completionist Themer
OP
Member
Joined
Mar 7, 2009
Messages
4,483
Trophies
1
Location
Pantsuland
Website
www.youtube.com
XP
2,874
Country
United States
Mantis41 said:
Thanks Jurassicplayer that inilink looks a lot better without the text. I didn't see any picture though, just a quick white screen before akIAO takes over. Still it's a lot better than the usual brownish screen with scrolling text.

Is there anyway to kill the text as moonshell loads?
:/ Strange...the pictures load just fine for me...Are you putting a topload.bmp and bottomload.bmp in the extlink folder? They should be 256x192 each...at least...I THINK they are supposed to be that size...I never tried a different size before...
As for the text that comes up when Moonshell loads, that is hard coded into Moonshell2, so you can't really change that stuff (I think xD).

QUOTE(SifJar @ May 5 2011, 02:56 PM) With regards to the stuff with r23 and r32 versions; is the r23 versions there to support the cards that newer revisions of devkitARM killed support for (accidently)? (Some slot 2 cards don't work with newer devkitARM revisions, but I'm not sure of exact revision numbers...)
IIRC I think the split with the two revisions was because Moonshell1 wasn't update-able past r23 or something like that...but I could be wrong...
 

Mantis41

Well-Known Member
Member
Joined
Jun 3, 2009
Messages
1,851
Trophies
0
Location
earth
XP
454
Country
United States
jurassicplayer said:
Are you putting a topload.bmp and bottomload.bmp in the extlink folder? They should be 256x192 each...at least...I THINK they are supposed to be that size...I never tried a different size before...
Um........... Missed that step
Thanks
 

avenir

Well-Known Member
Member
Joined
Dec 8, 2010
Messages
375
Trophies
0
XP
93
Country
United States
SifJar said:
With regards to the stuff with r23 and r32 versions; is the r23 versions there to support the cards that newer revisions of devkitARM killed support for (accidently)? (Some slot 2 cards don't work with newer devkitARM revisions, but I'm not sure of exact revision numbers...)
mshl2tools r23 doesn't support slot2 carts.
actually xenobox libfatreduce just kills slot2 support for faster load (well, for spinal's r4menu)
r23 should be used only if you have issues with r32.
 

SifJar

Not a pirate
Member
Joined
Apr 4, 2009
Messages
6,022
Trophies
0
Website
Visit site
XP
1,175
Country
avenir said:
SifJar said:
With regards to the stuff with r23 and r32 versions; is the r23 versions there to support the cards that newer revisions of devkitARM killed support for (accidently)? (Some slot 2 cards don't work with newer devkitARM revisions, but I'm not sure of exact revision numbers...)
mshl2tools r23 doesn't support slot2 carts.
actually xenobox libfatreduce just kills slot2 support for faster load (well, for spinal's r4menu)
r23 should be used only if you have issues with r32.
So none of this stuff will work with my Max Media Dock then?
frown.gif


Anyway, nice to see you back here.
 

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
  • No one is chatting at the moment.
    LeoTCK @ LeoTCK: yes for nearly a month i was officially a wanted fugitive, until yesterday when it ended