Homebrew Looking for all ninjHax versions between 1.1b and 2.6 gamma

DiscostewSM

Well-Known Member
OP
Member
Joined
Feb 10, 2009
Messages
5,481
Trophies
2
Location
Sacramento, California
Website
lazerlight.x10.mx
XP
5,218
Country
United States
I am doing a test of the different versions because a test program is not working correctly on the latest version of *hax, but does work on 1.1b. It's important that I know when it breaks so I can contact the top dogs about it, as what is being used in the test program could benefit blargSNES and possibly other emulators.

I am running an o3DS 9.2.0.20 U (using Cubic Ninja for my tests, as my default environment is the HBL Loader via cia under emuNAND, loaded from rxTools via HomemenuHax)
 
  • Like
Reactions: SLiV3R

SLiV3R

3DS Friend Code: 0473-9069-2206
Member
Joined
Jan 9, 2006
Messages
2,317
Trophies
2
Website
soundcloud.com
XP
1,802
Country
I cant help unfortunately. But this is a very good initiative! Most of the homebrews I have tried are compatible in one hax, but not in the other. And it hasn't only to do with different audio like DSP or CSND...

Personally I have hax 1.1b, 2.1 and 2.6 atm. So a standardization is much welcomed! :)
 

UltiNaruto

Well-Known Member
Member
Joined
Sep 4, 2015
Messages
182
Trophies
0
Age
28
XP
182
Country
France
The reset function seems to have changed a lot. Maybe it could be this.

ctrulib 0.2.0 :
Code:
void GPU_Reset(u32* gxbuf, u32* gpuBuf, u32 gpuBufSize)
{
    int i;
    static u32 param[0x80];
    static u32 zero[0x80];
    memset(zero,  0x00, 0x80*4);

    GPUCMD_SetBuffer(gpuBuf, gpuBufSize, 0);

    GPUCMD_AddSingleParam(0x000D0080, 0x00011000);

    for(i=0x1;i<0xC;i++)GPUCMD_AddSingleParam(0x000F0080+i, 0x00000000);
    GPUCMD_AddSingleParam(0x000F008C, 0x00FF0000);
    GPUCMD_AddSingleParam(0x000F008D, 0x00000000);
    GPUCMD_AddSingleParam(0x000F008E, 0x00000000);

    for(i=0x0;i<0xF;i++)GPUCMD_AddSingleParam(0x000F0090+i, 0x00000000);

    GPUCMD_AddSingleParam(0x00010245, 0x00000001);
    GPUCMD_AddSingleParam(0x00010244, 0x00000000);
    GPUCMD_AddSingleParam(0x00080289, 0x80000000);
    GPUCMD_AddSingleParam(0x000B0229, 0x00000000);

    GPUCMD_AddSingleParam(0x000F0252, 0x00000000);
    GPUCMD_AddSingleParam(0x000F0251, 0x00000000);
    GPUCMD_AddSingleParam(0x000F0254, 0x00000000);
    GPUCMD_AddSingleParam(0x00010253, 0x00000000);

    GPUCMD_AddSingleParam(0x000F0242, 0x00000000);
    GPUCMD_AddSingleParam(0x000F024A, 0x00000000);

    GPUCMD_AddSingleParam(0x0005025E, 0x00000000);

    GPUCMD_Add(0x800F0101, zero, 0x00000007);

    GPUCMD_AddSingleParam(0x000F011F, 0x00010140);
    GPUCMD_AddSingleParam(0x000F0100, 0x00E40100);
    GPUCMD_AddSingleParam(0x000F0101, 0x01010000);
    GPUCMD_AddSingleParam(0x000F0107, 0x00001F40);
    GPUCMD_AddSingleParam(0x000F0105, 0xFF00FF10);

    GPUCMD_AddSingleParam(0x00010061, 0x00000003);
    GPUCMD_AddSingleParam(0x00010062, 0x00000000);

    GPUCMD_AddSingleParam(0x000F0065, 0x00000000);
    GPUCMD_AddSingleParam(0x000F0066, 0x00000000);
    GPUCMD_AddSingleParam(0x000F0067, 0x00000000);

    GPUCMD_AddSingleParam(0x00010118, 0x00000000);
    GPUCMD_AddSingleParam(0x000F011B, 0x00000000);

    GPUCMD_AddSingleParam(0x0007006A, 0x00FFFFFF);

    GPUCMD_AddSingleParam(0x000F0102, 0x00000003);

    GPUCMD_AddSingleParam(0x00080126, 0x03000000);

    GPUCMD_Add(0x800F0040, zero, 0x00000010);

    param[0x0]=0x1F1F1F1F;
    param[0x1]=0x1F1F1F1F;
    param[0x2]=0x1F1F1F1F;
    param[0x3]=0x1F1F1F1F;
    param[0x4]=0x1F1F1F1F;
    param[0x5]=0x1F1F1F1F;
    param[0x6]=0x1F1F1F1F;
    GPUCMD_Add(0x800F0050, param, 0x00000007);

    GPUCMD_AddSingleParam(0x000F0058, 0x00000100);
    GPUCMD_AddSingleParam(0x000F004C, 0x00000001);
    GPUCMD_AddSingleParam(0x000F006F, 0x00000000);

    GPUCMD_AddSingleParam(0x00020060, 0x00000000);
    GPUCMD_AddSingleParam(0x000C0069, 0x00020000);

    GPUCMD_AddSingleParam(0x000F0113, 0x0000000F);
    GPUCMD_AddSingleParam(0x000F0112, 0x0000000F);
    GPUCMD_AddSingleParam(0x000F0114, 0x00000003);
    GPUCMD_AddSingleParam(0x000F0115, 0x00000003);

    GPUCMD_AddSingleParam(0x000F01C5, 0x00000000);
    for(i=0;i<32;i++)GPUCMD_Add(0x800F01C8, zero, 0x00000008);
    GPUCMD_AddSingleParam(0x000F01C5, 0x00000100);
    for(i=0;i<32;i++)GPUCMD_Add(0x800F01C8, zero, 0x00000008);
    GPUCMD_AddSingleParam(0x000F01C5, 0x00000200);
    for(i=0;i<32;i++)GPUCMD_Add(0x800F01C8, zero, 0x00000008);
    GPUCMD_AddSingleParam(0x000F01C5, 0x00000300);
    for(i=0;i<32;i++)GPUCMD_Add(0x800F01C8, zero, 0x00000008);
    GPUCMD_AddSingleParam(0x000F01C5, 0x00000400);
    for(i=0;i<32;i++)GPUCMD_Add(0x800F01C8, zero, 0x00000008);
    GPUCMD_AddSingleParam(0x000F01C5, 0x00000500);
    for(i=0;i<32;i++)GPUCMD_Add(0x800F01C8, zero, 0x00000008);
    GPUCMD_AddSingleParam(0x000F01C5, 0x00000600);
    for(i=0;i<32;i++)GPUCMD_Add(0x800F01C8, zero, 0x00000008);
       
    GPUCMD_AddSingleParam(0x000F0290, 0x80000000);
    for(i=0;i<48;i++)GPUCMD_Add(0x800F0291, zero, 0x00000008);
    GPUCMD_AddSingleParam(0x000F02CB, 0x00000000);
    for(i=0;i<4;i++)GPUCMD_Add(0x000F02CC, zero, 0x00000080);
    GPUCMD_AddSingleParam(0x000F029B, 0x00000200);

    for(i=0;i<28;i++)GPUCMD_Add(0x000F029C, zero, 0x00000080);

    GPUCMD_AddSingleParam(0x000F02BF, 0x00000000);
    GPUCMD_AddSingleParam(0x000F02B1, 0x00000000);
    GPUCMD_AddSingleParam(0x000F02B2, 0x00000000);
    GPUCMD_AddSingleParam(0x000F02B3, 0x00000000);
    GPUCMD_AddSingleParam(0x000F02B4, 0x00000000);

    param[0x0]=0xFFFFFFFF;
    param[0x1]=0xFFFFFFFF;
    GPUCMD_Add(0x800F028B, param, 0x00000002);

    GPUCMD_Add(0x800F0205, zero, 0x00000024);

    for(i=0;i<gpuResetSequenceLength;i++)GPUCMD_AddSingleParam(gpuResetSequence[i*2],gpuResetSequence[i*2+1]);

    GPUCMD_Finalize();
    GPUCMD_Run(gpuBuf);
}

ctrulib-1.1.0 :
Code:
void GPU_Reset(u32* gxbuf, u32* gpuBuf, u32 gpuBufSize)
{
    GPUCMD_SetBuffer(gpuBuf, gpuBufSize, 0);
}
 

DiscostewSM

Well-Known Member
OP
Member
Joined
Feb 10, 2009
Messages
5,481
Trophies
2
Location
Sacramento, California
Website
lazerlight.x10.mx
XP
5,218
Country
United States
The reset function seems to have changed a lot. Maybe it could be this.

ctrulib 0.2.0 :
Code:
void GPU_Reset(u32* gxbuf, u32* gpuBuf, u32 gpuBufSize)
{
    int i;
    static u32 param[0x80];
    static u32 zero[0x80];
    memset(zero,  0x00, 0x80*4);

    GPUCMD_SetBuffer(gpuBuf, gpuBufSize, 0);

    GPUCMD_AddSingleParam(0x000D0080, 0x00011000);

    for(i=0x1;i<0xC;i++)GPUCMD_AddSingleParam(0x000F0080+i, 0x00000000);
    GPUCMD_AddSingleParam(0x000F008C, 0x00FF0000);
    GPUCMD_AddSingleParam(0x000F008D, 0x00000000);
    GPUCMD_AddSingleParam(0x000F008E, 0x00000000);

    for(i=0x0;i<0xF;i++)GPUCMD_AddSingleParam(0x000F0090+i, 0x00000000);

    GPUCMD_AddSingleParam(0x00010245, 0x00000001);
    GPUCMD_AddSingleParam(0x00010244, 0x00000000);
    GPUCMD_AddSingleParam(0x00080289, 0x80000000);
    GPUCMD_AddSingleParam(0x000B0229, 0x00000000);

    GPUCMD_AddSingleParam(0x000F0252, 0x00000000);
    GPUCMD_AddSingleParam(0x000F0251, 0x00000000);
    GPUCMD_AddSingleParam(0x000F0254, 0x00000000);
    GPUCMD_AddSingleParam(0x00010253, 0x00000000);

    GPUCMD_AddSingleParam(0x000F0242, 0x00000000);
    GPUCMD_AddSingleParam(0x000F024A, 0x00000000);

    GPUCMD_AddSingleParam(0x0005025E, 0x00000000);

    GPUCMD_Add(0x800F0101, zero, 0x00000007);

    GPUCMD_AddSingleParam(0x000F011F, 0x00010140);
    GPUCMD_AddSingleParam(0x000F0100, 0x00E40100);
    GPUCMD_AddSingleParam(0x000F0101, 0x01010000);
    GPUCMD_AddSingleParam(0x000F0107, 0x00001F40);
    GPUCMD_AddSingleParam(0x000F0105, 0xFF00FF10);

    GPUCMD_AddSingleParam(0x00010061, 0x00000003);
    GPUCMD_AddSingleParam(0x00010062, 0x00000000);

    GPUCMD_AddSingleParam(0x000F0065, 0x00000000);
    GPUCMD_AddSingleParam(0x000F0066, 0x00000000);
    GPUCMD_AddSingleParam(0x000F0067, 0x00000000);

    GPUCMD_AddSingleParam(0x00010118, 0x00000000);
    GPUCMD_AddSingleParam(0x000F011B, 0x00000000);

    GPUCMD_AddSingleParam(0x0007006A, 0x00FFFFFF);

    GPUCMD_AddSingleParam(0x000F0102, 0x00000003);

    GPUCMD_AddSingleParam(0x00080126, 0x03000000);

    GPUCMD_Add(0x800F0040, zero, 0x00000010);

    param[0x0]=0x1F1F1F1F;
    param[0x1]=0x1F1F1F1F;
    param[0x2]=0x1F1F1F1F;
    param[0x3]=0x1F1F1F1F;
    param[0x4]=0x1F1F1F1F;
    param[0x5]=0x1F1F1F1F;
    param[0x6]=0x1F1F1F1F;
    GPUCMD_Add(0x800F0050, param, 0x00000007);

    GPUCMD_AddSingleParam(0x000F0058, 0x00000100);
    GPUCMD_AddSingleParam(0x000F004C, 0x00000001);
    GPUCMD_AddSingleParam(0x000F006F, 0x00000000);

    GPUCMD_AddSingleParam(0x00020060, 0x00000000);
    GPUCMD_AddSingleParam(0x000C0069, 0x00020000);

    GPUCMD_AddSingleParam(0x000F0113, 0x0000000F);
    GPUCMD_AddSingleParam(0x000F0112, 0x0000000F);
    GPUCMD_AddSingleParam(0x000F0114, 0x00000003);
    GPUCMD_AddSingleParam(0x000F0115, 0x00000003);

    GPUCMD_AddSingleParam(0x000F01C5, 0x00000000);
    for(i=0;i<32;i++)GPUCMD_Add(0x800F01C8, zero, 0x00000008);
    GPUCMD_AddSingleParam(0x000F01C5, 0x00000100);
    for(i=0;i<32;i++)GPUCMD_Add(0x800F01C8, zero, 0x00000008);
    GPUCMD_AddSingleParam(0x000F01C5, 0x00000200);
    for(i=0;i<32;i++)GPUCMD_Add(0x800F01C8, zero, 0x00000008);
    GPUCMD_AddSingleParam(0x000F01C5, 0x00000300);
    for(i=0;i<32;i++)GPUCMD_Add(0x800F01C8, zero, 0x00000008);
    GPUCMD_AddSingleParam(0x000F01C5, 0x00000400);
    for(i=0;i<32;i++)GPUCMD_Add(0x800F01C8, zero, 0x00000008);
    GPUCMD_AddSingleParam(0x000F01C5, 0x00000500);
    for(i=0;i<32;i++)GPUCMD_Add(0x800F01C8, zero, 0x00000008);
    GPUCMD_AddSingleParam(0x000F01C5, 0x00000600);
    for(i=0;i<32;i++)GPUCMD_Add(0x800F01C8, zero, 0x00000008);
      
    GPUCMD_AddSingleParam(0x000F0290, 0x80000000);
    for(i=0;i<48;i++)GPUCMD_Add(0x800F0291, zero, 0x00000008);
    GPUCMD_AddSingleParam(0x000F02CB, 0x00000000);
    for(i=0;i<4;i++)GPUCMD_Add(0x000F02CC, zero, 0x00000080);
    GPUCMD_AddSingleParam(0x000F029B, 0x00000200);

    for(i=0;i<28;i++)GPUCMD_Add(0x000F029C, zero, 0x00000080);

    GPUCMD_AddSingleParam(0x000F02BF, 0x00000000);
    GPUCMD_AddSingleParam(0x000F02B1, 0x00000000);
    GPUCMD_AddSingleParam(0x000F02B2, 0x00000000);
    GPUCMD_AddSingleParam(0x000F02B3, 0x00000000);
    GPUCMD_AddSingleParam(0x000F02B4, 0x00000000);

    param[0x0]=0xFFFFFFFF;
    param[0x1]=0xFFFFFFFF;
    GPUCMD_Add(0x800F028B, param, 0x00000002);

    GPUCMD_Add(0x800F0205, zero, 0x00000024);

    for(i=0;i<gpuResetSequenceLength;i++)GPUCMD_AddSingleParam(gpuResetSequence[i*2],gpuResetSequence[i*2+1]);

    GPUCMD_Finalize();
    GPUCMD_Run(gpuBuf);
}

ctrulib-1.1.0 :
Code:
void GPU_Reset(u32* gxbuf, u32* gpuBuf, u32 gpuBufSize)
{
    GPUCMD_SetBuffer(gpuBuf, gpuBufSize, 0);
}

I'm not talking about ctrulib. I'm talking about the actual *hax that allow the homebrew in the first place, which differ in results of a binary compiled back on November 2015. However, what I will do just to make sure (when I get home today) is compile against the latest stuff, then test on *hax 1.1b. I had already tried it with 2.6 gamma, and the result were the same as with the old compile on 2.6 gamma.
 

UltiNaruto

Well-Known Member
Member
Joined
Sep 4, 2015
Messages
182
Trophies
0
Age
28
XP
182
Country
France
I just pointed out that. I knew you weren't talking about ctrulib. But seeing how the source changed maybe *hax 2.6 handle the gpu reset differently causing the crash on *hax 2.6.
 

DiscostewSM

Well-Known Member
OP
Member
Joined
Feb 10, 2009
Messages
5,481
Trophies
2
Location
Sacramento, California
Website
lazerlight.x10.mx
XP
5,218
Country
United States
I just pointed out that. I knew you weren't talking about ctrulib. But seeing how the source changed maybe *hax 2.6 handle the gpu reset differently causing the crash on *hax 2.6.

But it's not crashing. It's just not giving the result that is shown when running with *hax 1.1b. The result is supposed to show a cube with each of its 6 sides an arrangement of 4 colors. On 2.6 gamma, it's completely black.
 

UltiNaruto

Well-Known Member
Member
Joined
Sep 4, 2015
Messages
182
Trophies
0
Age
28
XP
182
Country
France
But blargSnes has no problems with colors, has it? Except that some games are having black screen on boot.
 

DiscostewSM

Well-Known Member
OP
Member
Joined
Feb 10, 2009
Messages
5,481
Trophies
2
Location
Sacramento, California
Website
lazerlight.x10.mx
XP
5,218
Country
United States
But blargSnes has no problems with colors, has it? Except that some games are having black screen on boot.

This is a test program completely separate from blargSNES, meant to test an aspect of the 3DS's GPU. But what it works with "could" be used for blargSNES if the problematic area could be determined (which as far as I'm aware is within how the *hax accesses the hardware).

Again, I'll test with the latest libraries when I get home and try it with the old ninjHax 1.1b to see whether it's any different from the old compiled build.
 

Psi-hate

GBATemp's Official Psi-Hater
Member
Joined
Dec 14, 2014
Messages
1,745
Trophies
1
XP
3,105
Country
United States
Looking at smealum's ninjhax 2.x source code, you should notice that it dates back since June 2014 that was back when ninjhax one was being worked on so perhaps you should look there as ninjhax 2.x is just updated 1.x . You could look at the dates and compare. Hope that helps.
 

DiscostewSM

Well-Known Member
OP
Member
Joined
Feb 10, 2009
Messages
5,481
Trophies
2
Location
Sacramento, California
Website
lazerlight.x10.mx
XP
5,218
Country
United States
Well, used a new compile of the test program against 1.1b, and it showed the same problem as if on 2.6 gamma, so...

1.1b + old test = correct
1.1b + new test = not correct
2.6g + old test = not correct
2.6g + new test = not correct

The test program was made in early November of 2015, and I have the source, so I guess what I'll do next is use libraries dated from back then (including ctrulib), and try compiling it. If it works (as the 1.1b + old test shows), then I'll go through each commit made to the libraries by each new date, and see when it changes from displaying correctly to displaying incorrectly. That should give me an indication of what the problem might be, and a point of reference, where I can then refer it to the higher-ups of *hax and see if it's something that might have been overlooked in later builds of the homebrew exploit.
 
  • Like
Reactions: SLiV3R
General chit-chat
Help Users
  • No one is chatting at the moment.
  • JuanMena @ JuanMena:
    Will you give me mouth to mouth oxygen if my throat closes?
  • K3N1 @ K3N1:
    Nah the air can do that
  • K3N1 @ K3N1:
    Ask @x65943 he's trained for that stuff
  • JuanMena @ JuanMena:
    Kissing random dudes choking in celery? Really? Need to study for that?
  • K3N1 @ K3N1:
    Yes it requires a degree
  • K3N1 @ K3N1:
    I could also yank out the rest of my teeth but theirs professionals for that
  • x65943 @ x65943:
    If your throat closes, putting oxygen in your mouth will not solve anything - as you will be introducing oxygen prior to the area of obstruction
  • JuanMena @ JuanMena:
    Just kiss me Kyle.
  • x65943 @ x65943:
    You either need to be intubated to bypass obstruction or create a stoma inferior to the the area of obstruction to survive
  • x65943 @ x65943:
    "Just kiss me Kyle." And I thought all the godreborn gay stuff was a smear campaign
  • JuanMena @ JuanMena:
    If I die, tell my momma I won't be carrying Baby Jesus this christmas :sad::cry:
  • K3N1 @ K3N1:
    Smear campaigns are in The political section now?
  • JuanMena @ JuanMena:
    Chary! Chary! Chary, Chary, Chary!
  • Sonic Angel Knight @ Sonic Angel Knight:
    Pork Provolone :P
  • Psionic Roshambo @ Psionic Roshambo:
    Sounds yummy
  • K3N1 @ K3N1:
    Sweet found my Wii u PSU right after I ordered a new one :tpi:
  • JuanMena @ JuanMena:
    It was waiting for you to order another one.
    Seems like, your PSU was waiting for a partner.
  • JuanMena @ JuanMena:
    Keep them both
    separated or you'll have more PSUs each year.
  • K3N1 @ K3N1:
    Well one you insert one PSU into the other one you get power
  • JuanMena @ JuanMena:
    It literally turns it on.
  • K3N1 @ K3N1:
    Yeah power supplies are filthy perverts
  • K3N1 @ K3N1:
    @Psionic Roshambo has a new friend
    +1
  • JuanMena @ JuanMena:
    It's Kyle, the guy that went to school to be a Certified man Kisser.
  • Psionic Roshambo @ Psionic Roshambo:
    Cartmans hand has taco flavored kisses
  • A @ abraarukuk:
    hi guys
    A @ abraarukuk: hi guys