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 Warning: Spoilers inside! -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 Warning: Spoilers inside! -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 Warning: Spoilers inside! -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 Warning: Spoilers inside! -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!