Hacking DSInject - Definitive NDS Wii U Virtual Console Injector

phacox_cll

Well-Known Member
OP
Member
Joined
Mar 30, 2019
Messages
172
Trophies
0
XP
1,339
Country
Mexico
Version 1.2 of "DSInject" is the final version of independent development. "DSInject" is now integrated into "Phacox's Injector", and its development continues within this.

Thanks to all who supported this thread.


Hello,

DSInject is a program that allows you to inject NDS games into the Wii U VC. Focused on streamlining the testing of different ROM combinations and Wii U VC base game.

Download <-- 1.2

Features

- Two modes of use, graphic and commands.
- Support for ROM formats *.nds and *.srl
- Image support *.png, *.jpg and *.bmp
- The Title ID reflects if you have used the same combination of ROM, INI and Wii U VC base game.
- Option to encrypt the result (WUPInstaller format) or leave it deciphered (Loadiine format).
- Define folders for your ROM collection, image gallery and display layouts.
- Use encrypted or decrypted Wii U VC games as a base.
- Multiple options through the command window, you can define everything or just an input folder and an output folder, or combine (see the examples).

Use in graphic mode
The first time you open DSInject go to the configuration tab, define the folders of your collections, enter the Wii U Common Key and select a NDS game from the Wii U VC that you previously have to use as a base.

config.png


Once the base has been loaded correctly, go to the main tab.

Click on the respective button on the right and select the NDS ROM file.

Enter a name and if you want enter also a name of two lines.

Modify the game layout. (In development).

If you do not want to use the default images, change them with the respective buttons.

Choose if you want to pack (encrypt) or not the result.

Click on the inject button, select the output folder and wait for the process to be performed. The program will let you know if the injection was successful or if there was a problem.

main.png


It is only necessary to enter the Wii U Common Key once and it will be saved. It is necessary if you want to encrypt or decrypt NUS content.
Use in command mode
Help comand:
Use: DSinject [-base folder_path] [-name short_name] [-longname name_line_1 name_line_2] [-in folder_path] [-rom file_path] [-icon file_path] [-tv file_path] [-drc file_path] [-out folder_path] [not-encrypt]
Or: DSinject help
Or: DSinject load-key common_key
Or: DSinject load-base folder_path
Or: DSinject create-image [-frame file_path] [-title file_path] [-name short_name|-longname name_line_1 name_line_2] [-r value] [-out folder_path]
Or: DSinject create-icon [-frame file_path] [-title file_path] [-out folder_path]
Or: SDinject pack|unpack -in folder_path [-out folder_path]

Options:

help
Show this help message.

load-key common_key
The Wii U Common Key is required to pack and unpack NUS CONTENT.
load-base folder_path
Path to the NDS VC game that will be copied internally "base" where the ROM will be injected.

create-image
Indicates that must create an image for the boot screen.
create-icon
Indicates that must create an icon to represent a game.

pack
Indicates that the NUS CONTENT input will be encrypted.
unpack
Indicates that the NUS CONTENT input will be decrypted.

-base folder_path
Path to the NDS VC game where the ROM will be injected.
The process does not modify the NDS VC game since it creates an internal copy of the game "base", if not specified, the previous loaded base will be used.
-name short_name
A short game name to show.
If not specified, the name inside ROM will be used.
If the create-image option is present, it indicates the name of a single line that will be placed on the frame image.
-longname name_line_1 name_line_2
A long game name to show can be two lines.
If not specified, the short name will be used.
If the create-image option is present, it indicates the name of two lines that will be placed on the frame image.
-in folder_path
Path where the "rom.nds", "vc.ini", "icon.png", "tv.png" and "drc.png" files are taken.
If the pack|unpack option is present it indicates the path to the NUS CONTENT.
-rom file_path
Path to the NDS game ROM.
If not specified, the "rom.z64" file will be searched in the "-in" folder.
-icon file_path
Path to an image file to use as icon (*.png, *.jpg or *.bmp).
If not specified, the "icon.png" file will be searched in the "-in" folder, if not found a default image will be used.
-tv file_path
Path to an image file to use as boot tv (*.png, *.jpg or *.bmp).
If not specified, the "tv.png" file will be searched in the "-in" folder, if not found a default image will be used.
-drc file_path
Path to an image file to use as boot drc (*.png, *.jpg or *.bmp).
If not specified, the "drc.png" file will be searched in the "-in" folder, if not found the boot tv image will be used.
-out folder_path
Path where the result will be put.
If not specified, the root folder of 64Inject will be used.
not-encrypt
Indicates that the result should not be encrypted, by default is encrypted.

-title file_path
Path to the image of the title screen, which will be placed on the background by default. If not specified, a black box will be placed.
-frame file_path
Path to the frame image, which will be placed on the title screen.
If not specified, the background will be seen by default.
-r value
A value greater than or equal to 2004, that represents the launch year of the game, will be placed on the frame image.

Note:
If the paths or names contain spaces put them in quotes.
Examples:

First use

>dsinject load-key XXXXXXXXXXXXXXXXXX

Load the Common Key to be able to decrypt and encrypt NUS content.

>dsinject load-base "c:\path\to\nds game [00050000XXXXXXXX]"

Load the game "nds game [00050000XXXXXXXX]" as the base for the injections.

Simple injection

>dsinject -name "Game Name" -rom "c:\path\to\some nds rom.nds"

Change the ROM of the base game. Use the specified name. Encrypts the result.

Simpler injection

>dsinject -name "Game Name" -in "c:\path\to\input folder"

Previously the "input folder" must contain the file "rom.nds" and optionally the files "icon.png", "tv.png" and "drc.png". Encrypts the result.

Even simpler injection

>dsinject -rom "c:\path\to\some nds rom.nds"

Change the ROM of the base game. Use the internal name of the ROM. Encrypts the result.

Advanced injection

>dsinject -base "c:\path\to\other nds game [00050000XXXXXXXX]" -name "Game Name" -in "c:\path\to\input folder" -rom "c:\path\to\some nds rom.nds" -icon "c:\path\to\some Image.jpg" -out "c:\path\to\output folder" not-encrypt

Load the game "other nds game [00050000XXXXXXXX]" as a base. Use the indicated rom and icon (skip the search for the files "rom.nds" and "icon.png"), if the "input folder" contains the files "tv.png" or "drc .png ", will use them for the injection. Put the result unencrypted in the folder "output folder".
Warning messages
Two warning messages are considered, when DSInject is started.

One occurs when Java is not detected, which is necessary to run both NUSPacker and JNUSTool.

warning_java.png


The second occurs when NUSPacker or JNUSTool are not detected. DSInject will work, although these tools are not present, but it will not be able to decipher or encrypt NUS content, if it is requested to decrypt an encrypted base game it will simply detect it as invalid, if it is requested to encrypt the result, it will perform the injection in the base game but it will not can complete the process by launching a failed injection message.

warning_nuspacker_jnustool.png

Changelog
1.2 FINAL (2019-12-02)
- Leave the beta phase.
- Show more relevant information in the log file.
- Change the way to calculate the Title ID.
- Other corrections and minor changes.

1.1.1 beta (2019-11-10)
- Now set the names (short and long) as the title of all regions.

1.1 beta (2019-09-21)
- Now identify all the base games correctly.

1.0 beta (2019-07-22)
- Initial release.
Disclaimer

The tools packaged with this application belong to their respective developers.

Credits

NUSPacker by timogus.

JNUSTool by Maschell.
 
Last edited by phacox_cll,

Brainbow

Member
Newcomer
Joined
Nov 10, 2019
Messages
13
Trophies
0
Age
42
XP
230
Country
Germany
Hey, thanks for this program.
Injected my first DS game and it works flawlessly.

But there seems to be a bug with the title of the icon in the Wii U Menu.
Instead of the Short name I inserted, the program took the title of the base game I used to inject.

Can I fix this somehow?
 

CORE

3:16
Member
Joined
Jul 15, 2018
Messages
1,176
Trophies
1
XP
2,067
Country
United Kingdom
Yes but it involves FTPING and modifying the meta folder. xml file it been a while since I have messed with WiiU.

Filezilla and Notepad++ is useful to have or plain notepad will do.

Are you sure it the App though? mine appears to fine? Even so u can just delete via HDD management and reinstall a new inject.

BARE IN MIND BE CAREFUL INSTALLING DS INJECTS U COULD OVERWRITE HAXCHI OR COLDBOOT.

BE VIGILANT WHEN IT COMES TO TITLE IDs take note of them essentially DS.

Title Lister is a handy App to list what u have installed and u can use that to get Title ID of the DS Game u used for HaxChi or ColdBoot so u dont accidentally overwrite via an Injected DS Game.

If your using Browser Exploit though I guess dont need to worry so much but still better off not making a mess and overwriting other Injects by mistake.
 
Last edited by CORE,
  • Like
Reactions: phacox_cll

Brainbow

Member
Newcomer
Joined
Nov 10, 2019
Messages
13
Trophies
0
Age
42
XP
230
Country
Germany
Thanks for the fast reply.
You can see my settings in the pictures. I don't think I did something wrong.
dsinject_options.pngdsinject_options_2.png

This time I didn't check "Pack up result" to look at the meta.xml.
The program only applies the shortname to the english language. Others get the name of the base game, "YOSHI'S ISLAND DS" in this case.
inject_meta.png

As a workaround I changed the names manually in the meta.xml as you suggested and wrote my own batch to pack the file with nusPacker.
I reinstalled the game, this time everything works correctly. :)
 
  • Like
Reactions: phacox_cll and CORE

phacox_cll

Well-Known Member
OP
Member
Joined
Mar 30, 2019
Messages
172
Trophies
0
XP
1,339
Country
Mexico
Hey, thanks for this program.
Injected my first DS game and it works flawlessly.

But there seems to be a bug with the title of the icon in the Wii U Menu.
Instead of the Short name I inserted, the program took the title of the base game I used to inject.

Can I fix this somehow?
Hi, the bug was mine, DSInject 1.1 and earlier versions only modify the titles in English. Version 1.1.1 will correct that bug.
 
  • Like
Reactions: ChibiMofo and CORE

phacox_cll

Well-Known Member
OP
Member
Joined
Mar 30, 2019
Messages
172
Trophies
0
XP
1,339
Country
Mexico
Yes but it involves FTPING and modifying the meta folder. xml file it been a while since I have messed with WiiU.

Filezilla and Notepad++ is useful to have or plain notepad will do.

Are you sure it the App though? mine appears to fine? Even so u can just delete via HDD management and reinstall a new inject.

BARE IN MIND BE CAREFUL INSTALLING DS INJECTS U COULD OVERWRITE HAXCHI OR COLDBOOT.

BE VIGILANT WHEN IT COMES TO TITLE IDs take note of them essentially DS.

Title Lister is a handy App to list what u have installed and u can use that to get Title ID of the DS Game u used for HaxChi or ColdBoot so u dont accidentally overwrite via an Injected DS Game.

If your using Browser Exploit though I guess dont need to worry so much but still better off not making a mess and overwriting other Injects by mistake.
In question of overwriting by mistake Haxchi or Coldboot.

DSInject generates Title IDs that have the following structure: 00050000D5XXXXYY

Where XXXX is a 16-bit hash generated from the base CRC32 and ROM CRC32, and YY are flags that indicate the use of custom images.

And I anticipate that I will modify this structure (in the final version 1.2), where XXXX will be the CRC16 of the ROM, and YY will be an internal identifier (index) of the base used. This to be the same as the one that the multi-injector I am preparing will use.

In any case, it is guaranteed that you will not generate a Title ID of an official DS game, since no official game starts with 00050000D5.
 
  • Like
Reactions: CORE

Brainbow

Member
Newcomer
Joined
Nov 10, 2019
Messages
13
Trophies
0
Age
42
XP
230
Country
Germany
In any case, it is guaranteed that you will not generate a Title ID of an official DS game, since no official game starts with 00050000D5.

Hi, good to hear.

In order to spare me the workaround to change the meta.xml manually, I altered your sourcecode and made a new version to fix the translation.
I can't upload the file as I don't have enough posts, but it's just DSInjector.cs where the code is missing.
 
  • Like
Reactions: CORE and phacox_cll

RazGAWD

Member
Newcomer
Joined
Feb 10, 2020
Messages
15
Trophies
0
Age
41
XP
62
Country
Canada
I havent used this tool but went through the first few pages to get a better sense of the material.

So my queation is then, do we use an existing legit copy of a DS game from the store and inject it? Does this imply a very limited number of DS titles you can inject?
 
Last edited by RazGAWD,

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
  • No one is chatting at the moment.
    Xdqwerty @ Xdqwerty: I hate myself