Homebrew [Release] Homebrew Launcher with grid layout

  • Thread starter Thread starter mashers
  • Start date Start date
  • Views Views 675,606
  • Replies Replies 4,218
  • Likes Likes 139
The code I'm using to scan for titles is exactly the same as the original HBL code. The only thing I have changed is the way they are displayed. So I don't think the problem is that they're being detected, I think it's that you can see them because they're on the grid. I've removed the original HBL code which lets you scroll through the list of titles in favour of my own code. I wonder whether that code has some logic in it to skip over duplicates or something. I can't figure it out right now. I'm just working on a way of ignoring the duplicates.
 
The second AR title is actually a hidden title: http://www.3dbrew.org/wiki/System_Settings#System_Updater

They are probably titles without a SMDH file, that's why the previous one is used, if you are using the same buffer to read the data for each title without re-initializing it it would explain the problem. If that's the problem, re-init it and if no data is read skipt that title.

What I don't know is what does original hbl to skip that second AR title, gonna look at it now, but probably does what I told you, as if I recall correctly before extracting the smdh data it checks if the smdh was read.

EDIT:

Code:
    if(tb->selected)
    {
        if(!tb->selected->icon)loadTitleInfoIcon(tb->selected);
        if(tb->selected->icon)extractSmdhData(tb->selected->icon, tb->selectedEntry.name, tb->selectedEntry.description, tb->selectedEntry.author, tb->selectedEntry.iconData);
        else
        {
            tb->selected = NULL;
            if(!move)tb->selectedId++;
            else tb->selectedId += move;
        }
    }
That else statement is what skips the second AR title due to extractSmdhData failing (probably), after the function ends, it is called again and the title was advanced without user pressing keys.
EDIT2: I missread the source, what fails is "loadTitleInfoIcon()", keep in mind HBL code calls icon to the full smdh data, not just the image. Since the icon pointer points to nothing, the title is skipped because if there's no smdh data the title is meant to be launched from within another app.
 
Last edited by suloku,
  • Like
Reactions: Vague Rant
Ahhh I've just figured it out. The 'duplicates' were not duplicates at all :) They were titles with no valid icon, name or description. I had written a function which went through all of the titles, including these which should not have been visible, and added them to the menu. Because there was no icon or text for them, the previous one got repeated. This continued until a valid title was encountered and the icon, name and description from that started being drawn on the screen. I've added a check for each one to see if there is actually a valid icon (actually SMDH data) and if not, it's skipped.

Can you download beta 17 and see if it's fixed now? For me at least it's got rid of my duplicate AR Games!
 
Ahhh I've just figured it out. The 'duplicates' were not duplicates at all :) They were titles with no valid icon, name or description. I had written a function which went through all of the titles, including these which should not have been visible, and added them to the menu. Because there was no icon or text for them, the previous one got repeated. This continued until a valid title was encountered and the icon, name and description from that started being drawn on the screen. I've added a check for each one to see if there is actually a valid icon (actually SMDH data) and if not, it's skipped.

Can you download beta 17 and see if it's fixed now? For me at least it's got rid of my duplicate AR Games!
Mashers it works! Genius man.
 
Ahhh I've just figured it out. The 'duplicates' were not duplicates at all :) They were titles with no valid icon, name or description. I had written a function which went through all of the titles, including these which should not have been visible, and added them to the menu. Because there was no icon or text for them, the previous one got repeated. This continued until a valid title was encountered and the icon, name and description from that started being drawn on the screen. I've added a check for each one to see if there is actually a valid icon (actually SMDH data) and if not, it's skipped.

Can you download beta 17 and see if it's fixed now? For me at least it's got rid of my duplicate AR Games!
I'ts working great now! to see the unofficials cias I just need to enter the cfw first and then the Homebrew Launcher. No duplicates. This is the only missing detail I'm sure you'll fix in no time.

Think I found a bug in the title selector, you're able to select the blank spaces that don't have a title on them, this may confuse some people as the cursor completely disappears and the top screen shows no information

Thanks for your awesome work! :hrth:
 
to see the unofficials cias I just need to enter the cfw first and then the Homebrew Launcher. No duplicates. This is the only missing detail I'm sure you'll fix in no time.
It's not possible to see the "unofficial" CIA's of emunand from sysnand.
 
I never said Emunand. I tested on sysnand. I'm using Pasta CFW
In that case it might be done by changing the filters to recognize title ID's with a different type identifiers, but still doubt if it's possible.
this one possibly: 0x00040010
 
Last edited by Tjessx,
In that case it might be done by changing the filters to recognize title ID's with a different type identifiers, but still doubt if it's possible.
I meant that I only see the unofficial cias installed on sysnand after runinng pasta cfw and then entering the hbl and running svdt. I rarely use emunand. If I go straight to the HBL without pasta I only see the legit cias. It's not a problem. That's how the other HBL work too. :)
 
Last edited by JJTapia19,
I don't really think unnofficial CIAs can be read/launched without the CFW running, I pressume the title functions fail with those titles if the ticket is not valid.

BUT we can try launching them, my title launcher can be set to autoboot. Set it with cfw, then try without cfw. It'll probably hang though.

Ahhh I've just figured it out. The 'duplicates' were not duplicates at all :) They were titles with no valid icon, name or description. I had written a function which went through all of the titles, including these which should not have been visible, and added them to the menu. Because there was no icon or text for them, the previous one got repeated. This continued until a valid title was encountered and the icon, name and description from that started being drawn on the screen. I've added a check for each one to see if there is actually a valid icon (actually SMDH data) and if not, it's skipped.

Can you download beta 17 and see if it's fixed now? For me at least it's got rid of my duplicate AR Games!
I guess you missed my post :p

Well, Now you just have to put a title launcher button that shows all titles and launches them :D (bottom left corner seems perfect for that)
 
Oh @mashers could I reccomend making the first slot of the Select title screen the retail cart if it's found? Right now it's the last one off the 8 pages of titles I have. It would be a nice little touch and it will speed up cart save editing. :lol:
 
I guess you missed my post :p

Well, Now you just have to put a title launcher button that shows all titles and launches them :D (bottom left corner seems perfect for that)
Oh yeah, sorry I missed it in my notifications. Thanks for replying! :) Yeah I could put an icon to bring up the titles for launching... I guess I would need to be on the new NH for that to work though?

Oh @mashers could I reccomend making the first slot of the Select title screen the retail cart if it's found? Right now it's the last one off the 8 pages of titles I have. It would be a nice little touch and it will speed up cart save editing. :lol:
Great idea. I'll look into it.
 
@mashers new NH?

You just need to implement this function in regionfree.c and make some flag to call it after breaking from main loop and the exit calls are done, after selecting the title.

Code:
Result regionFreeRun2(u32 pid_low, u32 pid_high, u8 mediatype, u8 flag)
{
    Result ret = NSS_Reboot(pid_low, pid_high, mediatype, flag);

    regionFreeExit();

    return ret;
}
For example:

Code:
if (launchtitle == 1)
    regionFreeRun2(target_title.title_id & 0xffffffff, (target_title.title_id >> 32) & 0xffffffff, target_title.mediatype, 0x1);

You need to call it BEFORE regionfreeexit(); after srvExit(); (either before or after regionfreerun())


Also, title filtering (installed titles, game titles, demo titles) is very easy to implement, just check this commit: https://github.com/suloku/3ds_hb_menu/commit/ea3cdb583ac5d126f22415595359716763f75d23

Oh @mashers could I reccomend making the first slot of the Select title screen the retail cart if it's found? Right now it's the last one off the 8 pages of titles I have. It would be a nice little touch and it will speed up cart save editing. :lol:
You know, you can make an specific svdt for each title you want by modifying svdt.xml, including gamecard (title ID 0000000000000000, mediatype 1). Check ironhax installer's xml file.
 
Last edited by suloku,
  • Like
Reactions: JJTapia19
You know, you can make an specific svdt for each title you want by modifying svdt.xml, including gamecard (title ID 0000000000000000, mediatype 1). Check ironhax installer's xml file.
That is usefull but for other save editing apps like PKbank it would still be more convinient to have an icon inside the select title menu too. Also I like the changing .smdh feature that @mashers implemented to the gamecart icon.
 
@mashers new NH?

You just need to implement this function in regionfree.c and make some flag to call it after breaking from main loop and the exit calls are done, after selecting the title.

Code:
Result regionFreeRun2(u32 pid_low, u32 pid_high, u8 mediatype, u8 flag)
{
    Result ret = NSS_Reboot(pid_low, pid_high, mediatype, flag);

    regionFreeExit();

    return ret;
}
For example:

Code:
if (launchtitle == 1)
    regionFreeRun2(target_title.title_id & 0xffffffff, (target_title.title_id >> 32) & 0xffffffff, target_title.mediatype, 0x1);

You need to call it BEFORE regionfreeexit(); after srvExit(); (either before or after regionfreerun())


Also, title filtering (installed titles, game titles, demo titles) is very easy to implement, just check this commit: https://github.com/suloku/3ds_hb_menu/commit/ea3cdb583ac5d126f22415595359716763f75d23


You know, you can make an specific svdt for each title you want by modifying svdt.xml, including gamecard (title ID 0000000000000000, mediatype 1). Check ironhax installer's xml file.
Fantastic, thank you for this information. I will definitely be adding this feature! Oh and I meant will I need @smealum's new launcher or whatever it is he's working on right now for the title launching to work. Apparently not though :)

Oh by the way guys, I've just made a slight change so the cart icon has a nice tab on it like a real 3DS cart :) Not uploaded right now though.
 
  • Like
Reactions: JJTapia19
Fantastic, thank you for this information. I will definitely be adding this feature! Oh and I meant will I need @smealum's new launcher or whatever it is he's working on right now for the title launching to work. Apparently not though :)

Oh by the way guys, I've just made a slight change so the cart icon has a nice tab on it like a real 3DS cart :) Not uploaded right now though.
Please upload it! I really want to see it. And if it's possible, please do the rounding of the icons less aggressive! Just take a look are the Nintendo icons' roundness. If they would match, it would look really nice!
 
Please upload it! I really want to see it. And if it's possible, please do the rounding of the icons less aggressive! Just take a look are the Nintendo icons' roundness. If they would match, it would look really nice!
I think the exterior border could remain the same, but the interior one, as you say, should be as the Nintendo one.
 
  • Like
Reactions: SomeGamer

Site & Scene News

Popular threads in this forum