Hacking [Release][v.1.5.1] Sky Army Knife - a Sky3DS Template Tool

Foxi4

Endless Trash
OP
Global Moderator
Joined
Sep 13, 2009
Messages
30,825
Trophies
3
Location
Gaming Grotto
XP
29,842
Country
Poland
Seems to be a bug if you have a file named .3ds and try to open it the information is wrong, you *HAVE* to rename to 3dz for correct information to show up.

To clarify this was under "Infos Extractor" tab
The infos extractor clearly states that it extracts infos from 3dz and header.bin dumps. The extension has to be 3dz or the reader doesn't know what offset to set. Is .3ds support a big deal?
 
D

Deleted-19228

Guest
Well when I am attempting to load the rom in both the "Infos Extractor" and "Template Generator" yea, it is a big deal :P

I dump my own carts on my Gateway system. There's no reason why I shouldn't be able to load it in the extractor and the generator tabs. On that note, is there some reason why the extractor tab can't automatically put the correct info into the generator tab?
 

Xive

Member
Newcomer
Joined
Apr 1, 2015
Messages
9
Trophies
0
Age
38
XP
111
Country
Senegal
How is the randomization of the Unique ID done? I have found out that it always generate the same set of Unique ID everytime i check and uncheck the randomize box.
For example, the first time i check randomize it is always 93 E4 1C 6E 20 91 1B 9B 36 BC 7C E9 4E DC 67 7E, the 2nd time i uncheck and check it, it is always 32 D8 3B B6 F3 AD 98 5F D4 BC 65 5B 3D 9A CB E2.
So for the 3rd time, 4th time and so on, it is always the same.

For now i just unchecked and check it a random amount of times everytimes so that others who are using SAK to generate random ID have a low chance to getting the same as mine.
 

Oishikatta

Well-Known Member
Member
Joined
Oct 30, 2014
Messages
971
Trophies
0
XP
603
Country
United States
How is the randomization of the Unique ID done? I have found out that it always generate the same set of Unique ID everytime i check and uncheck the randomize box.
For example, the first time i check randomize it is always 93 E4 1C 6E 20 91 1B 9B 36 BC 7C E9 4E DC 67 7E, the 2nd time i uncheck and check it, it is always 32 D8 3B B6 F3 AD 98 5F D4 BC 65 5B 3D 9A CB E2.
So for the 3rd time, 4th time and so on, it is always the same.

For now i just unchecked and check it a random amount of times everytimes so that others who are using SAK to generate random ID have a low chance to getting the same as mine.

It uses the C rand() function, but does not call srand().

If no seed value is provided, the rand() function is automatically seeded with a value of 1.

Example output:
93 E4 1C 6E 20 91 1B 9B 36 BC 7C E9 4E DC 67 7E
32 D8 3B B6 F3 AD 98 5F D4 BC 65 5B 3D 9A CB E2
0A 0E 08 6D 29 26 ED 9C DF 42 40 60 B4 07 2B 12

These values are different, but will still be the same pattern.
D0 63 C2 EF 1C 5D CE 95 5F 21 F5 5F F0 A8 F8 0F
E9 FC BC E9 28 6C 58 77 FE AC 58 65 E3 73 5E C5
C0 0C 3C BD 93 96 1A C4 9F D4 86 98 69 AD 1F 3B

These values will be different each time the program is run.
A4 30 E5 C4 47 64 46 FC C5 C6 82 35 3C A3 C2 F9
CE 90 63 F6 03 83 23 2C D2 77 E8 D0 2C DC C9 7C
52 34 33 BC DA 77 E5 93 8D A0 C4 54 7C 3E E8 69
Code:
using System;
using System.Runtime.InteropServices;
using System.Security;
 
public class Test
{
    [SuppressUnmanagedCodeSecurity]
    [DllImport("MSVCR100.dll", CallingConvention = CallingConvention.Cdecl, SetLastError = true)]
    internal static extern int rand();
    [SuppressUnmanagedCodeSecurity]
    [DllImport("MSVCR100.dll", CallingConvention = CallingConvention.Cdecl, SetLastError = true)]
    internal static extern int srand(int seed);
 
// Function to show different randoms
    public static void Main()
    {
        // srand(1); // if srand() is not called, 1 is used by default
        Console.WriteLine(Randomize(16));
        Console.WriteLine(Randomize(16));
        Console.WriteLine(Randomize(16));
 
        Console.WriteLine();
 
        Console.WriteLine("These values are different, but will still be the same pattern.");
        srand(2);
        Console.WriteLine(Randomize(16));
        Console.WriteLine(Randomize(16));
        Console.WriteLine(Randomize(16));
 
        Console.WriteLine();
 
        Console.WriteLine("These values will be different each time the program is run.");
 
        TimeSpan CurrentTime = DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0);
        srand((int) CurrentTime.TotalSeconds);
 
        Console.WriteLine(Randomize(16));
        Console.WriteLine(Randomize(16));
        Console.WriteLine(Randomize(16));
 
        Console.Read();
    }
 
// Randomize function from Sky Army Knife
    public static string Randomize(int Length)
      {
        string str = (string) null;
        char[] chArray = new char[16]
        {
          '0',
          '1',
          '2',
          '3',
          '4',
          '5',
          '6',
          '7',
          '8',
          '9',
          'A',
          'B',
          'C',
          'D',
          'E',
          'F'
        };
        int num1 = 1;
        int num2 = Length * 3 - 1;
        if (1 <= num2)
        {
          do
          {
            int num3 = num1;
            int num4 = 3;
            int num5 = (int) ((uint) num3 / (uint) num4) * 3;
            str = num3 - num5 != 0 ? str + (object) chArray[rand() % 16] : str + " ";
            ++num1;
          }
          while (num1 <= num2);
        }
        return str;
      }
}
 

[^Blark^]

Well-Known Member
Member
Joined
Dec 19, 2012
Messages
503
Trophies
1
Age
33
XP
683
Country
United States
Neptune said:
Well when I am attempting to load the rom in both the "Infos Extractor" and "Template Generator" yea, it is a big deal :P

You can use GW rom patcher and extract the header.bin file from the .3ds file and load that instead of 3dz file. That way you can open both without changing file name.
 

Foxi4

Endless Trash
OP
Global Moderator
Joined
Sep 13, 2009
Messages
30,825
Trophies
3
Location
Gaming Grotto
XP
29,842
Country
Poland
You can use GW rom patcher and extract the header.bin file from the .3ds file and load that instead of 3dz file. That way you can open both without changing file name.
If this is such a big issue then I'll just add 3DS support, it's just a matter of punching in another offset, but I don't see a reason why it'd be a necessary tool since 3DS ROM's have a blank space where the header usually is in 3DZ's and all the necessary info is immediately available in the Base window. You stand to gain nothing from this.
Does every c2 header works with every c2 rom?
I don't understand the question, please elaborate.
 

d3ighty

Active Member
Newcomer
Joined
Apr 8, 2015
Messages
34
Trophies
0
Age
33
XP
79
Country
Gambia, The
i mean the cart id. For example. I took my header from MH4 (EUR) and was able to play Tekken 3D with is also a c2 and StreetFighterIV which was "45" but i changed the cart id to "c2" and i was able to play.

But for fantasy, which is a c2 title it wont work.

I just changed the "c2" and the Header. Nothing more like size or anything.
 

Foxi4

Endless Trash
OP
Global Moderator
Joined
Sep 13, 2009
Messages
30,825
Trophies
3
Location
Gaming Grotto
XP
29,842
Country
Poland
i mean the cart id. For example. I took my header from MH4 (EUR) and was able to play Tekken 3D with is also a c2 and StreetFighterIV which was "45" but i changed the cart id to "c2" and i was able to play.

But for fantasy, which is a c2 title it wont work.

I just changed the "c2" and the Header. Nothing more like size or anything.
Try leaving the header be and just change the Unique ID. Be sure to switch games prior to testing.
 

[^Blark^]

Well-Known Member
Member
Joined
Dec 19, 2012
Messages
503
Trophies
1
Age
33
XP
683
Country
United States
Foxi4 said:
If this is such a big issue then I'll just add 3DS support, it's just a matter of punching in another offset, but I don't see a reason why it'd be a necessary tool since 3DS ROM's have a blank space where the header usually is in 3DZ's and all the necessary info is immediately available in the Base window. You stand to gain nothing from this.

it s not a big issue for me i just stated this for Neptune who says its a big deal. i could care less if .3ds files are support in future release. as you said .3dz and header.bin files read perfectly. so why the need for .3ds. and SAK does what i need it to do regardless if it dont have .3ds support in "info extractor" im a happy camper :)
 

xile6

Well-Known Member
Member
Joined
Jan 15, 2006
Messages
1,219
Trophies
0
XP
720
Country
United States
when ever i try to open some roms i get

and errorr

unhandled exception has occurred in your application....
.....
start index cannot be less than zero
parameter name: start index


___
what am i doing wrong?
 

Foxi4

Endless Trash
OP
Global Moderator
Joined
Sep 13, 2009
Messages
30,825
Trophies
3
Location
Gaming Grotto
XP
29,842
Country
Poland
Version of application, name of the ROM, scene or private, region? The unhandled exception during ROM loading when it's not found in the template was fixed in 1.4.2 Quick Fix.
 
D

Deleted-19228

Guest
it s not a big issue for me i just stated this for Neptune who says its a big deal. i could care less if .3ds files are support in future release. as you said .3dz and header.bin files read perfectly. so why the need for .3ds. and SAK does what i need it to do regardless if it dont have .3ds support in "info extractor" im a happy camper :)


Then leave it as-is and say it will never correctly read .3ds and it MUST be renamed to .3dz. I am honestly surprised I am the first person to bring this up.
 

Foxi4

Endless Trash
OP
Global Moderator
Joined
Sep 13, 2009
Messages
30,825
Trophies
3
Location
Gaming Grotto
XP
29,842
Country
Poland
Then leave it as-is and say it will never correctly read .3ds and it MUST be renamed to .3dz. I am honestly surprised I am the first person to bring this up.
.3DS dumps generally have an empty space where GW and Sky inject their headers, that's why I thought supporting them in the reader is pointless. I think I have a way to satisfy everyone - a drop-down Offset selector, that should sort things out.
 

DestinySky

Well-Known Member
Member
Joined
Apr 15, 2015
Messages
128
Trophies
0
XP
531
Country
Malaysia
I dont know what I did wrong...
I have the latest v1.4.2 quick fix and using the latest template0413.txt

ROM I'm trying to generate template is Super.Smash.Bros.USA.READNFO.3DS-BigBlueBox.3ds

I have my private header with the my own Unique ID. I copied the Unique ID in to the text box, leaving the EEPROM ID and the Cart ID untouched.
I then check the Auto-Detect Unknown ID, the field automatically populated for me.

Then I click on Generate Template!, but I got an error:
UnknownID contains illegal character! UnknownID is not correctly formatted!

I thought Unknown ID is automatically detected from the base template and also should be accurately populated to the field?
 

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
  • No one is chatting at the moment.
    K3Nv2 @ K3Nv2: Well start walking towards them +1