CITRA New 3DS Core

Hi and thanks for this new core. For myself Its always crashing, with 3ds and CIA files Is there a bios needed and if yes where to place it ? I checked my open gl, its more than 3.3 And you guys, can you launch games ?

1 Like

Yes.

You dont need any bioses, right ?

1 Like

Just saying “yes” doesn’t really help. He asked if there was Bios’ that he needed and also if you got it working. If you have got it working, a little help and clarification would go a long way.

I haven’t gotten it working at all. I guess you need Decrypted Roms in the normal Citra emulator, so I got those and can get it to run in the Citra emulator, but in Retroarch it tries to load then goes to the main RetroArch menu and displays the error “Failed to Load Content” I’ve tried multiple ROMs and can’t get them to work in Retroarch at all. Can you help explain how you got it to work or if you had to use some other type of rom or had to patch it or something?

2 Likes

Doesn’t need a BIOS, does need decrypted games.

The buildbot version works for me in Linux x86_64, i didn’t get to try it in Windows. If it’s giving you trouble, launch from a command line with --verbose --log-file log.txt and then paste that somewhere like pastebin and then post a link here and we’ll take a look.

Incompatible with Vulkan, switch to OpenGL driver

If Citra standalone doesn’t require bios, the libretro core shouldn’t. It seems I was wrong thinking it was obvious.

He said it crashed the emulator, but didn’t post a log for us to really help, so, it’s basically the same attitude. And also didn’t post his system config.

Mine for reference: Core i5-3450 ondie video controller (crappy Intel HD Graphics) Windows 10 64-bit RetroArch 1.6 x64 OpenGL driver for graphics

Yeah, I 'm running it it Windows (Win 10 to be exact) and I couldn’t get it to work at all, but I was using the Vulkan video driver, I switched it back to GL and it worked. Thanks! Is there any reason to use Vulkan? I thought it was better, but if I’m going to have to switch back and forth for an extra bit of unnoticeable difference, I might as well just use the GL driver, correct?

1 Like

Here is my config : Core i7 2600k @ 3,40 GHz GeForce GTX 570 Windows 10 64 bit RetroArch 1.6 x64 with Open GL driver

Regarding the log file with Verbose, I dont understand how to get it (I’m not familiar with command line and Verbose)

I had some issues at first, I couldn’t even load the core.

The problem was that Citra needed updated libraries my self compiled Retroarch did not have. Grabbing the latest redist from the buildbot fixed that and it runs fine now.

Vulkan has a lot of benefits, though all of them are pretty small/subtle, and yeah, it only works with software-rendered cores and vulkan-native cores, and we don’t have graceful switching between it and GL when the core demands it.

Some people have gotten around that by having a GL config and a Vulkan config and they use a launcher to switch between them as needed.

This was less of a deal when we only had small number of libretro-gl cores, but that number is quickly growing, so we need a way to deal with it soon, I think.

Citra itself doesn’t have a Vulkan renderer right now. Can’t add something that is not there to begin with, and to go and ‘hard fork’ this just to add a Vulkan renderer would be 1) be a whole lot of work and 2) be an exercise in futility anyway as we would fall behind upstream. Best to keep it in lockstep with upstream.

What would be needed to get this running on android? Is there an arm dynarec or would a jni makefile do?

Where do you place the nand and sysdata directory? These files are needed for certain games like Pokemon.

I tried the system folder but that didn’t work.

EDIT: Nevermind i figured it out

I’ve been messing around with the Citra core on Kubuntu 17.10 x64. I’ve been trying to record footage of Pokemon Moon for the past little while, and recording Citra on its own gives me weird results due to not having a proper full-screen mode. This works a lot better, and near as I can tell it’s about as fast as the standalone emulator compiled as a release build. (Does this use the standard branch or bleeding edge? It’d be nice to have the option for both, like how the bsnes cores work.)

That said, I have been having issues. It seems like Citra and Libretro don’t play too nicely together yet. The first time I tried it, I’d been using Retroarch’s FFmpeg core with some prior footage for shader purposes. (Thanks for the VCR preset, hunterk!) It straight up crashed, and the errors I checked suggested that it was, for whatever reason, trying to generate a massive texture larger than 16384x16384. Turning off the shader, it worked fine, but when I tried to enable it, it went funny and wouldn’t work when I launched it again:

My theory is that Citra’s enlarging the image to fit the whole viewport before the image is passed to the shader. (It’s not an amazing theory, because playing back ~1080p video in FFmpeg worked with the VCR shader, albeit incredibly slowly.) Whatever the case, something doesn’t seem right. (I’m using single-screen mode for recording purposes, for the record.)

Another issue is that the integer scaling seemed incredibly wonky, measuring from a height of 400 at 1x and 800 at 2x. See these pictures for both:

This time, though, I got a clear picture of what went wrong. Put simply, it’s a bug, and an incredibly tiny one…namely, a typo:

RetroArch [INFO] :: Environ SET_GEOMETRY.
RetroArch [INFO] :: SET_GEOMETRY: 240x400, aspect: 1.667.

The X and Y coordinates were mixed up, so it thinks that the 3DS’ top screen has a height of 400, rather than a width. I imagine this will be a simple fix, though given other issues and the variety of possible screen layouts (and corresponding framebuffer sizes), you might wanna sanity check everything just in case.

Let me know if you need logs or anything. Looking forward to seeing this on the PPA! Good work, as always.

Good catch. I put in a PR to fix the width/height swap issue.

For the shader issue, are you using Cg or GLSL shaders?

GLSL. I don’t think Cg shaders work for any core for me right now, but given that they’re deprecated it’s not a huge issue, and I’m on Linux and AMD so fixing that might be more trouble than it’s actually worth.

The Citra Libretro core does all of its sizing itself, in terms of layout. We have to make some guesses as we cannot find out the window’s dimensions ourselves.

Yeah, massive textures are due to me just doing a dumb multiplication based on scaling. Thinking about capping it.

Cg shaders will not work with Citra, as they do not compile to OpenGL 3.3 at all.

Thanks CG shaders was making crashing retroarch With GLSL, its working