ROM Hack Rebuilding games for 4.x?

WulfyStylez

SALT/Bemani Princess
OP
Member
Joined
Nov 3, 2013
Messages
1,149
Trophies
0
XP
2,856
Country
United States
As I understand it, a couple of things currently cause games to not boot on 4.x.
First, 5.0 added the ability for games to store the CXI logo near the cleartext part of the NCCH header rather than in ExeFS. Say we rebuild ExeFS with the logo in it.
7.0 introduced a new encryption method, encrypting RomFS and everything except what NS needs in ExeFS with a different key. Obviously we can decrypt this, re-encrypt it the old way, and disable the flag that enables this new encryption.
Finally, there are checks on version, but they only seem to go as far as checking the plaintext region of the header (correct me if I'm wrong). These checks could be bypassed by putting spoofed data here (lower version numbers to 4.x-happy ones.

After everything, there's still a fairly significant chance that some titles will require dependencies from newer SDK versions. This is unavoidable, and those titles just won't work. If we're lucky, though, many games won't have newer dependencies. The 360 and PS3 scene get away with running newer titles on older libraries a lot, might be similar here.

My question is, given a game is processed like I mentioned above and we get lucky with code running on the older SDK version, shouldn't this be theoretically completely possible?
 

WulfyStylez

SALT/Bemani Princess
OP
Member
Joined
Nov 3, 2013
Messages
1,149
Trophies
0
XP
2,856
Country
United States
There's a lot of dicking around with the exheader needed to get newer games to boot, it seems. I'll look into it more later. It still seems possible at this point, for some titles at least.
 
  • Like
Reactions: ChrisX930

WulfyStylez

SALT/Bemani Princess
OP
Member
Joined
Nov 3, 2013
Messages
1,149
Trophies
0
XP
2,856
Country
United States
An update: It is technically possible and works for some titles.
That being said, it requires so much manual work (exheader dependencies need to be patched down, etc) and is on such a case-by-case basis that I can't consider it to be comfortably working. Games generally need to use very basic SDK libraries - ones that don't change much. Puyo Puyo Tetris worked fine on 4.5.

I'm going to leave this idea at that, and I'll be picking back up on another project that accomplishes the same means and then some. It's far too early to announce anything yet, but if anyone else is super familiar with ARM assembly, has a lot of free time, and knows/is willing to learn 3DS-specific technical stuff, PM me so I can get you in a relevant group. (Please don't bother me if don't meet those, though.) Thanks to anyone who's interested!!
 

Ericss

Well-Known Member
Member
Joined
Sep 1, 2010
Messages
464
Trophies
0
XP
365
Country
United States
I'm not savvy on ARM assembly, but I wish you good luck. This should be useful for both CFW and GW users (as that means being able to take screenshots and use plugins on recent games with NTR CFW).
 

Cyan

GBATemp's lurking knight
Former Staff
Joined
Oct 27, 2002
Messages
23,684
Trophies
2
Age
44
Location
Engine room, learning
XP
15,311
Country
France
with ROM tool, Games have a required Kernel version.
Do you know what's its purpose?

chance are that it's used to tell which SDK functions it requires, right? probably the minimum system version required to run the game. but the version don't match system menu versions numbering.

Majora's mask : Req. Kernel Version: 2.39-0
Mario kart 7 : Req. Kernel Version: 2.31-40
Monster hunter 4 : Req. Kernel Version: 2.44-5

maybe one specific title version? NATIV_FIRM?
 

WulfyStylez

SALT/Bemani Princess
OP
Member
Joined
Nov 3, 2013
Messages
1,149
Trophies
0
XP
2,856
Country
United States
I'm not savvy on ARM assembly, but I wish you good luck. This should be useful for both CFW and GW users (as that means being able to take screenshots and use plugins on recent games with NTR CFW).
It's actually something that aims to supersede both GW and the current hacky "CFW". Don't get hype yet, though. I'm still on the stage of taking notes on other payloads and such. It'll be a while, even longer if I end up not being able to find some other people to collaborate with.

with ROM tool, Games have a required Kernel version.
Do you know what's its purpose? what the version correspond to 3DS system menu/SDK?

chance are that it's used to tell which SDK functions it requires, right?

Majora's mask : Req. Kernel Version: 2.39-0
Mario kart 7 : Req. Kernel Version: 2.31-40
Monster hunter 4 : Req. Kernel Version: 2.44-5

Those values come from the plaintext region of the NCCH, as well as a bunch of version references and dependencies in the exheader. Patching those locations to lower versions, along with doing the stuff with decryption and logo data I mentioned in my first post, allowed a couple basic games to run on 4.5.

EDIT: oh, and 'what sdk functions are required' also come from a long list near the beginning of the exheader. They've got versions too.
 
  • Like
Reactions: Cyan

lisreal2401

Well-Known Member
Member
Joined
Jun 4, 2013
Messages
848
Trophies
0
Age
25
XP
2,659
Country
United States
Interesting. My question is - is this any different from the firmware spoofing tools we already have? I was also under the impression the games that don't work spoofed, simply don't work due to SDK dependencies being changed. The game used in your example (Puyo Tetris) which is 6.2, works using spoof tools already. I suppose a good test subject would be Theatrhythm Curtain Call. JPN version works spoofed with regular tools, but the US/EUR version don't. JPN is 6.2, US/EUR is 7.x. I can't imagine any 7.x SDK libraries were introduced in the English version, so it must the tools unable to patch out 7.x encryption. 6.X and under SDK all seem to work without a hitch in my experience.
 
General chit-chat
Help Users
    Psionic Roshambo @ Psionic Roshambo: Well it's great here but south of Tampa got wrecked