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,484
Trophies
2
Location
Sacramento, California
Website
lazerlight.x10.mx
XP
5,488
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,319
Trophies
2
Website
soundcloud.com
XP
1,847
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
29
XP
193
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,484
Trophies
2
Location
Sacramento, California
Website
lazerlight.x10.mx
XP
5,488
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
29
XP
193
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,484
Trophies
2
Location
Sacramento, California
Website
lazerlight.x10.mx
XP
5,488
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
29
XP
193
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,484
Trophies
2
Location
Sacramento, California
Website
lazerlight.x10.mx
XP
5,488
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,749
Trophies
1
XP
3,406
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,484
Trophies
2
Location
Sacramento, California
Website
lazerlight.x10.mx
XP
5,488
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

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
  • Veho @ Veho:
    Talk about propaganda.
  • Veho @ Veho:
    Illinois is working to ban toxic food additives that have been banned for decades in other countries; additives that can be replaced and all those countries still have Skittles and Mountain Dew. Title of the piece: GUBMINT WANTS TO TAKE AWAY YOUR CANDY
  • Veho @ Veho:
    Gee, I wonder if the author is biased?
  • SylverReZ @ SylverReZ:
    @Veho, Sounds and smells like bullshit. They don't give you cancer, and California should know that. I don't get why they stick labels that say "may or may not cause reproductive harm or cancer".
  • Veho @ Veho:
    Arsenic doesn't give you cancer either.
    +2
  • Veho @ Veho:
    California has already banned those additives BTW.
    +2
  • Veho @ Veho:
    Psi has been banned in the state of California.
    +2
  • Psionic Roshambo @ Psionic Roshambo:
    I am the cancer!!! lol
  • Psionic Roshambo @ Psionic Roshambo:
    Yayyy got arcade games on the Pi working lol
  • Veho @ Veho:
    Cool.
  • Psionic Roshambo @ Psionic Roshambo:
    Now to spend 6 months deleting all the garbage lol
  • Psionic Roshambo @ Psionic Roshambo:
    Mame should be two sets one for preservation of everything and one set for people who just want to play and enjoy the old old ganes
  • SylverReZ @ SylverReZ:
    @Psionic Roshambo, Shouldn't preservation be legal tho?
    +1
  • SylverReZ @ SylverReZ:
    @Psionic Roshambo, I always see this dude's shorts, he sounds pretty annoying.
    +1
  • Psionic Roshambo @ Psionic Roshambo:
    Preservation yeah it absolutely should be legal
    +1
  • SylverReZ @ SylverReZ:
    @Psionic Roshambo, Believe Japan was going to make it legal at some point, according to a Kotaku story.
    +1
  • Psionic Roshambo @ Psionic Roshambo:
    I swear like 99% of arcade games wouldn't even exist these days outside of MAME the arcade machines are old and busted very few ever saw any sort of home conversion
  • Psionic Roshambo @ Psionic Roshambo:
    We get 37 versions of Super Mario Bros but 0 of Beast Busters
    +1
  • SylverReZ @ SylverReZ:
    @Psionic Roshambo, There's a lot of obscure Japanese arcade titles that are either lost to time or dumped.
    +1
  • Psionic Roshambo @ Psionic Roshambo:
    It's so unfair, maybe AI can save us lol
  • Psionic Roshambo @ Psionic Roshambo:
    I mean if a company could use AI to do the work of a home conversion for essentially free why not? The rights for some games are completely lost though
  • SylverReZ @ SylverReZ:
    @Psionic Roshambo, AI is taking our jobs!
    +1
    Psionic Roshambo @ Psionic Roshambo: Lol