Homebrew [Release] Homebrew Launcher with grid layout

mashers

Stubborn ape
OP
Member
Joined
Jun 10, 2015
Messages
3,837
Trophies
0
Age
40
Location
Kongo Jungle
XP
5,074
Country
I've got some coding experience, but apparently not enough, because I tried looking at it earlier today and couldn't really figure it out.
With your help, I may be able to understand how your code works and all, but I would still need to understand how the coding for HANS works, and smea is probably too busy to personally help me understand his code, heh
Thanks buddy. If you do decide to have a look let me know and I'll do my best to help you figure things out.

I realized that my banner size was 400x240, when it should have been 400x222. That must be the problem. It works now.
Great! Glad you managed to sort it.

--------------------- MERGED ---------------------------

@mashers I tried adding a failsafe in case something like this happens again. I would suggest quickly disabling the updater as well if it happens again, just in case.

oh and I'm also going to have it auto-disable if it happens.
Thanks mate. I'll bear that in mind :)
 
D

Deleted-236924

Guest
I can't guarantee anything, haven't really done much in the way of programming in about a year or two, and I haven't done much C (done C# and Java though), but I don't mind taking a look. Would be really cool to get it working.
I'm assuming we'd probably have to look at how HANS launches titles compared to how your title launcher launches them, and try make title launcher launch them in a similar way to how HANS does, but I bet it's probably not that simple. Would probably just end up

It might even be a limitation of Region4 itself, and I'm not sure how that would be fixed. Your title launcher uses Region4 to launch titles right? HANS launches titles through Region5.

titles.c is the one that takes care of title launcher, yeah? And regionfree.c is for region free launcher on the main menu?

I know very little of actual 3DS programming so a lot of those functions might as well be Chinese to me. :P

Also, another thing. Uh, what's the best way of setting up dev environment to compile this? I had one working for compiling themehax back then, but I've heard lots of complicated stuff about compiling 3DS homebrew where you needed to have certain versions of different libraries installed in order to things to compile properly and a lot of stuff like that.
 
Last edited by ,
  • Like
Reactions: peteruk

VinsCool

Persona Secretiva Felineus
Global Moderator
Joined
Jan 7, 2014
Messages
14,600
Trophies
4
Location
Another World
Website
www.gbatemp.net
XP
25,207
Country
Canada
Hey just a random question.

How could the console language be detected? I mean, would it be possible to add a language detection in code, and use proper strings according to the console language being set?

I was just curious :)
 

MannCo

Well-Known Member
Member
Joined
Nov 23, 2014
Messages
144
Trophies
0
XP
325
Country
United States
I have a question: Could be possible to add the reset function (by pressing L+R+B+Down) from HANS to region4?

(This is more curiosity than a request, as I have no idea if it could be possible and if would be easy to implement.)
 

ihaveahax

Well-Known Member
Member
Joined
Apr 20, 2015
Messages
6,069
Trophies
2
XP
7,824
Country
United States
I have a question: Could be possible to add the reset function (by pressing L+R+B+Down) from HANS to region4?

(This is more curiosity than a request, as I have no idea if it could be possible and if would be easy to implement.)
not possible since region4 reboots the console to launch a game/application (which is also why the Hone Menu works).
 
  • Like
Reactions: MannCo
D

Deleted-236924

Guest
I found the problem with booting .cias when using title launcher in GridLauncher on emunand.
not possible since region4 reboots the console to launch a game/application (which is also why the Hone Menu works).
Region4 reboots the console to launch a game.

Games crash when loaded through Title Launcher from emunand, because the games aren't installed on sysnand. I doubt this can be fixed unless we can manage to change Region4 to make it launch games directly rather than reboot the console.
(I don't think simply installing the games to sysnand would work either, because once the 3DS reboots back to sysnand, it won't have signature checks patched, so it won't be able to load them.)
 
Last edited by ,
  • Like
Reactions: peteruk

ihaveahax

Well-Known Member
Member
Joined
Apr 20, 2015
Messages
6,069
Trophies
2
XP
7,824
Country
United States
I doubt this can be fixed unless we can manage to change Region4 to make it launch games directly rather than reboot the console.
at this point it would be region5, which is HANS. or maybe what r5 was going to do (still run under the exploited game's process, like ironfall).
 
D

Deleted-236924

Guest
Any idea what causes certain games not to work right in HANS anyway? (Example, messed up sound in Ocarina of Time 3D, or games that simply do not boot.)
Is it the payload still running in the background?
 

ihaveahax

Well-Known Member
Member
Joined
Apr 20, 2015
Messages
6,069
Trophies
2
XP
7,824
Country
United States
Any idea what causes certain games not to work right in HANS anyway? (Example, messed up sound in Ocarina of Time 3D, or games that simply do not boot.)
Is it the payload still running in the background?
this isn't the fault of the launcher, it's a payload/HANS issue. the biggest one is that some digital games that use 9.6+ encryption won't work I think.
 
D

Deleted-236924

Guest
Oh yeah, I know the launcher has nothing to do with it :P But if we could figure out what causes those games not to work right in HANS, someone could make a fix for HANS, and then we would truly not need R4 anymore.
 

daxtsu

Well-Known Member
Member
Joined
Jun 9, 2007
Messages
5,627
Trophies
2
XP
5,194
Country
Antarctica
Hey just a random question.

How could the console language be detected? I mean, would it be possible to add a language detection in code, and use proper strings according to the console language being set?

I was just curious :)

Sure: https://github.com/smealum/ctrulib/...9f/examples/get_system_language/source/main.c

But using strings from another language would probably require a moderate amount of code to read from a text file or something. It'd be nice to see different translations of the launcher for sure, though.
 

mashers

Stubborn ape
OP
Member
Joined
Jun 10, 2015
Messages
3,837
Trophies
0
Age
40
Location
Kongo Jungle
XP
5,074
Country
I can't guarantee anything,
No need - if you get a chance to take a look it would be great, but I certainly don't think guarantees are necessary :)

It might even be a limitation of Region4 itself, and I'm not sure how that would be fixed. Your title launcher uses Region4 to launch titles right? HANS launches titles through Region5.
Well, HANS is integrated into the launcher so either HANS or R4 can be used when booting titles.

titles.c is the one that takes care of title launcher, yeah? And regionfree.c is for region free launcher on the main menu?
Not quite. titles.c handles retrieving the title information from the device and building the title menu. If the title is being booted using R4 then yes, regionfree.c is used to boot it, whether it's a cart or title being booted from the main grid or the title launcher. If HANS is being used then boot.c is used to launch hans.3dsx.

I know very little of actual 3DS programming so a lot of those functions might as well be Chinese to me. :P
I was in the same position when I started. The launcher is quite complicated, especially in terms of how it handles booting various different types of apps/titles.

Also, another thing. Uh, what's the best way of setting up dev environment to compile this? I had one working for compiling themehax back then, but I've heard lots of complicated stuff about compiling 3DS homebrew where you needed to have certain versions of different libraries installed in order to things to compile properly and a lot of stuff like that.
You need to install devkitarm, devkitpro and ctrulib first:
http://3dbrew.org/wiki/Setting_up_Development_Environment

You then need to update ctrulib to the great-refactor branch:
https://github.com/smealum/ctrulib/tree/great-refactor

Then you need to install the 3DS portlibs:
https://github.com/xerpi/3ds_portlibs

I was originally developing on Mac OS X, but found for some reason that the launcher would no longer boot properly when the binary was built on a Mac. So I switched to a Lubuntu VM and it's fine now.

@mashers
When booting, if the user keeps Y held, skip the loading of all features and start Netloader for 3dslink?
Good idea. I've logged an issue for this. As I said in the OP, please log any future feature requests on GitHub or PM them to me to make sure I see them.

Sure: https://github.com/smealum/ctrulib/...9f/examples/get_system_language/source/main.c

But using strings from another language would probably require a moderate amount of code to read from a text file or something. It'd be nice to see different translations of the launcher for sure, though.
Thanks for looking into this. I didn't know it was possible to get the system language. With regard to adding a feature for this, it would require a lot of code to be added. Everywhere text is being drawn, a check would need to be added for which language to use. A language database would then need to be consulted to obtain the correct string for the current language, with a fallback (probably to English) if there is no translation for the currently selected language. All of this is possible in theory of course, but it would very likely require the removal of something else to make space for the additional code.
 

ihaveahax

Well-Known Member
Member
Joined
Apr 20, 2015
Messages
6,069
Trophies
2
XP
7,824
Country
United States
Everywhere text is being drawn, a check would need to be added for which language to use. A language database would then need to be consulted to obtain the correct string for the current language, with a fallback (probably to English) if there is no translation for the currently selected language. All of this is possible in theory of course, but it would very likely require the removal of something else to make space for the additional code.
I hope I'm making sense but you could do something like getstring("settings.update.info") (this could show "Update Gridlauncher to the latest version") in place of any text. that function would then return the proper string needed. I think this is a fairly common way of doing things.
 

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
  • No one is chatting at the moment.
    Xdqwerty @ Xdqwerty: good night