PabloMK7 / citra

A Nintendo 3DS Emulator
GNU General Public License v2.0
3.75k stars 635 forks source link

Pretendo support? #44

Closed Anonymous941 closed 8 months ago

Anonymous941 commented 8 months ago

Is there an existing issue for this?

What feature are you suggesting?

Now that experimental online support has been added, is it possible to allow connecting to Pretendo?

Why would this feature be useful?

This would allow online play after the Nintendo wireless connections close, not come with a ban risk, and be better legally as Pretendo is an open source project. It would also allow playing games with a real 3DS, without forcing you to use Nintendo's servers

PabloMK7 commented 8 months ago

Yes, it is possible to connect to pretendo by using their account manager and placing the IPS files in the right places.

Anonymous941 commented 8 months ago

This is very exciting, thank you!

Anonymous941 commented 8 months ago

I'm having trouble doing this. I can put the /luma/titles/* folders in citra-emu/load/mods, but /luma/sysmodules/*.ips doesn't seem to have any equivalent I can find. Also, (and this might be by design), their account manager won't run because it expects a Luma3DS environment, which can't happen due to no ARM9 support

Am I missing something?

Anonymous941 commented 8 months ago

How do you get online in the first place? I've dumped my console unique data, loaded it into Citra, but the System Settings just hangs when trying to sign in to a NNID. I have a feeling I need to enable it somewhere, but I just don't see anything, and can't find any guides online or in the issues

Linkdash2019 commented 8 months ago

It’s explained on https://web.archive.org/web/20240304191503/https://github.com/PabloMK7/citra/releases When this project was renamed ñ the change log and tutorial were removed…

Anonymous941 commented 8 months ago

@Linkdash2019 Thanks, it works now for Nintendo Network. I can't connect to Pretendo still however - the account manager won't run because it requires Luma3DS, and I don't know where to put the /luma/sysmodules/*.ips files

Also, why was the project renamed ñ? And why is the README blank?

TwistedTempest commented 8 months ago

@Linkdash2019 Thanks, it works now for Nintendo Network. I can't connect to Pretendo still however - the account manager won't run because it requires Luma3DS, and I don't know where to put the /luma/sysmodules/*.ips files

Can vouch with the same experience. Placing all Luma files in the emulated sdmc/luma folder as well as the juxt file in /3ds didn't work. My guess is there's another file path that would work or that a patch for Nimbus needs to be made for it to accept the emulated environment

Also, why was the project renamed ñ? And why is the README blank?

Probably in the interest of flying under the radar until the dust settles, given what happened to the former main repo

Anonymous941 commented 8 months ago

Can vouch with the same experience. Placing all Luma files in the emulated sdmc/luma folder as well as the juxt file in /3ds didn't work. My guess is there's another file path that would work or that a patch for Nimbus needs to be made for it to accept the emulated environment

That's right, the sdmc/luma folder isn't used for patches. I'm not sure where exactly to put these as they are not standard game patches, @PabloMK7 do you know where? If I know the file paths, I can try to patch Nimbus to work, but it would be hard since Citra doesn't give NAND access to .3dsx files

Linkdash2019 commented 7 months ago

Well I found another roadblock for pretendo on ñ. Nimbus expects Luma 13 and if luma isn’t found the app will refuse to function. Unless we can trick that app into thinking luma is there or the app looks for citra we can’t use the account manager.

TwistedTempest commented 7 months ago

Well I found another roadblock for pretendo on ñ. Nimbus expects Luma 13 and if luma isn’t found the app will refuse to function. Unless we can trick that app into thinking luma is there or the app looks for citra we can’t use the account manager.

This was already the accepted consensus, so the main goal was to copy the network files from a real 3DS and put them in what PabloMK7 called “the right places.” The issue is that there's no specification on where that is

Anonymous941 commented 7 months ago

Well I found another roadblock for pretendo on ñ. Nimbus expects Luma 13 and if luma isn’t found the app will refuse to function. Unless we can trick that app into thinking luma is there or the app looks for citra we can’t use the account manager.

The problem is that Citra (and its forks) don't allow access to NAND. So it's easy to bypass that check but the app would be useless as it can only read from the SD card...

TwistedTempest commented 7 months ago

The problem is that Citra (and its forks) don't allow access to NAND. So it's easy to bypass that check but the app would be useless as it can only read from the SD card...

If the flags that distinguish between network environments (the unused "dev" ones that Pretendo relies on) are stored in NAND then that might make it impossible to use Pretendo on emulator. It's already impossible to link a NNID to Citra, probably for that reason, so this might still need work

Anonymous941 commented 7 months ago

If the flags that distinguish between network environments (the unused "dev" ones that Pretendo relies on) are stored in NAND then that might make it impossible to use Pretendo on emulator. It's already impossible to link a NNID to Citra, probably for that reason, so this might still need work

While 3DS apps can't access the NAND, isn't it still accessible in citra-emu/nand? Also somehow Citra downloads .cxi modules (used for connecting to Nintendo Network), but I don't know where they're stored or how to patch them

TwistedTempest commented 7 months ago

While 3DS apps can't access the NAND, isn't it still accessible in citra-emu/nand? Also somehow Citra downloads .cxi modules (used for connecting to Nintendo Network), but I don't know where they're stored or how to patch them

Right, that could be the case. While I generally understand how these systems work I don't actually know how to code or the full file structure of Citra, so I'm not of much help here

Anonymous941 commented 7 months ago

Right, that could be the case. While I generally understand how these systems work I don't actually know how to code or the full file structure of Citra, so I'm not of much help here

Same here, I only know that much after hours of frustration trying to make a program read from NAND, only to find it working on a real 3DS

TwistedTempest commented 7 months ago

Update - making some headwind when it comes to connecting. It seems like some have gotten online on Android, but the real trouble is with Windows. Using all 6 LLE modules required for online (ACT, BOSS, FRD, NIM, HTTP, and SSL) at once when the IPS patches for Pretendo are in place causes the emulator to freeze up when trying to access the friend menu. Might open an issue about it (#79)

Anonymous941 commented 7 months ago

@TwistedTempest I'm on Linux, but I don't know where to put the IPS patches to test this. Should they just be in the normal locations?

TwistedTempest commented 7 months ago
  1. Download Nimbus 1.6.0
  2. Drop the folders from "(nimbus.zip)/luma/titles" into "(Citra)/user/load/mods" as-is.
  3. Make new folders in that mods folder with titles corresponding to those in "(nimbus.zip)/luma/sysmodules" (example: 0004013000002E02)
  4. Drop the corresponding IPS files into their new title folders, and rename them to code.ips (so that they look the same as those from the titles folder
  5. Once you're done, you should have 8 or 9 folders made, each with a 16-character title containing a code.ips file

Also, make sure that when attempting to set Nimbus to Pretendo Network LLE modules (BOSS, ACT, etc.) are enabled as required in the archived guide for connecting to Nintendo Network or the app won't register the change.