Homebrew Official Citra - New 3DS Emulator

  • Thread starter Thread starter bunnei
  • Start date Start date
  • Views Views 3,856,167
  • Replies Replies 7,211
  • Likes Likes 175
@Nyap I think either merry or linkmauve already ran Citra on some ARM device. I didn't run it on ARM yet and haven't used ARM devices the last couple of years - the following is just what I gathered on IRC or assumptions:
It should work without code changes, but you won't have a shader jit.
Also, for obvious reasons any kind of CPU jit probably won't improve ARM performance for at least a couple of months, possible years.
And as GPU drivers probably don't implement OpenGL 3.3 Core, you'll also be stuck with software rendering (or you must change some context stuff, possibly use a wrapper [if that exists yet?]).
Performance wise I'd expect nothing, and be happy about every frame you get to see ;)

You are welcome to try and provide feedback though!
(if you port the shader jit that'd be even more awesome. As we use the Dolphin code emitter it should probably be straightforward to add an ARM emitter)

I think someone was working on a unicorn-engine backend, so maybe that would even support hardware accelerated CPU emulation on ARM? (I didn't check yet wether unicorn engine, the linked board, linux or w/e support it. Also it's my understanding that the unicorn-engine backend is far from complete)
 
@Nyap I think either merry or linkmauve already ran Citra on some ARM device. I didn't run it on ARM yet and haven't used ARM devices the last couple of years - the following is just what I gathered on IRC or assumptions:
It should work without code changes, but you won't have a shader jit.
Also, for obvious reasons any kind of CPU jit probably won't improve ARM performance for at least a couple of months, possible years.
And as GPU drivers probably don't implement OpenGL 3.3 Core, you'll also be stuck with software rendering (or you must change some context stuff, possibly use a wrapper [if that exists yet?]).
Performance wise I'd expect nothing, and be happy about every frame you get to see ;)

You are welcome to try and provide feedback though!
(if you port the shader jit that'd be even more awesome. As we use the Dolphin code emitter it should probably be straightforward to add an ARM emitter)

I think someone was working on a unicorn-engine backend, so maybe that would even support hardware accelerated CPU emulation on ARM? (I didn't check yet wether unicorn engine, the linked board, linux or w/e support it. Also it's my understanding that the unicorn-engine backend is far from complete)
I would try in like a couple of months once I get my odroid - if I actually knew how to program or how emulators even work lol
man I wish I had more skillz :cry:
 
I couldn't be bothered to read that due to lack of punctuation
but from what I have read:
a) when did I say android? I was more thinking of linux
b) code has to be polished well to be easy to port? I thought it was just a case of changing some platform specific code (like I think opengl is different on x86 and arm), and then recompiling it
i mentioned ARM and x86 when i was talking about emulation porting in general, and android when talking about notable examples.android is still the top OS to use on arm, although iOS, windows and linux are on it.windows has it UWP,and a good NT kernel for ARM, so porting aint bad.linux needs more specific compiler changes, and toolchains must be changed to cross compile, and iOS is more like android in its adoption of cross platform frameworks. but in all this, most low level stuff may need to be changed. like @JayFoxRox said, some devs could run it on ARM, but no Shader Jit, cause that is x86 specific.3ds already has and ARM cpu, so the interpretor is relatively easy.

also @JayFoxRox , you said that a JIT wont do much for ARM, is it because dynarec mainly optimize already interpreted code to make it faster, but the 3ds is already ARM, so there is little interpretation to optimize?
 
No, that's a common myth. Host CPU = Guest CPU is almost never the case due to abi and version differences. You also often have to run in system mode whereas the host only allows to run in guest mode.
There are very few emulators which can benefit of host and guest being the same (most notably cxbx/dxbx and dosbox[?]). Stuff like KVM / HW-Virt (vtx / amd-v) also make it possible to run system-mode within user-mode but there are lots of caveats (such as missing ability to control instruction timing on different CPU models which is usually a show stopper). Even if you want to do HLE you often won't be able to run stuff 1:1 on the host.
I'm guessing there is lots of literature about this, so I'll try to avoid saying anything wrong and refer you to that instead.

In case of Citra the same interpreter (high level code) will run on x86 and ARM. Where it performs better depends on a lot of factors. It's hard to compare performance across archs anyway.
Also, I'm not sure what kind of "linux [..] specific compiler changes" you are talking about. Citra works fine on Linux.
It also uses cmake so chances are that will take care of cross-compiling if that's what you intend to do.
(However, Nyap only asked about compatibility with that board. And except for the shader jit there shouldn't be anything from preventing that. The board should be capable of running Linux and compiling it's own software. There wouldn't be much difference from compiling and running Citra on an x86 desktop PC probably)
 
It still freezes on petalburg woods exit with cro++. I don't know why is it, probably not CRO related.
That "other citra" fixed petalburg. It had to do with a language issue I think. I thought you worked on "other citra"?


Wow! What was changed for 51f4a9f? Menus are running 100% speed now and there's like a 2-4 fps increase! (Yo-Kai)
 
Might be a horrible question, but I figured I'd ask anyways. Does anyone have any research/insight into WiFi on Citra? I have ORAS running at over 100% just fine, but was wondering if anyone has any knowledge on how wifi works on the emulator. When I try to connect to wifi the game either crashes or acts like nothing happened at all. I might try and look in the debugger and see what the game is calling to make it crash and go from there, but I figured I'd ask here to see if anyone else has done some initial research yet. I know on things like Dolphin emulator this was possible by downloading a specific file with NUS, and figured something similar might be possible. I figured I'd just ask here first! Thanks!
 
Might be a horrible question, but I figured I'd ask anyways. Does anyone have any research/insight into WiFi on Citra? I have ORAS running at over 100% just fine, but was wondering if anyone has any knowledge on how wifi works on the emulator. When I try to connect to wifi the game either crashes or acts like nothing happened at all. I might try and look in the debugger and see what the game is calling to make it crash and go from there, but I figured I'd ask here to see if anyone else has done some initial research yet. I know on things like Dolphin emulator this was possible by downloading a specific file with NUS, and figured something similar might be possible. I figured I'd just ask here first! Thanks!
Citra haven't implement WiFi yet.
So don't get your hype for it. Also, goodbye to the Pokemon 20th Anniversary Event that is going on once Citra has WiFi support.
I got myself a ton of Legendary except for Mew.

Edit:
Also, Dolphin has NetPlay support.
 
Last edited by Miguel Gomez,
  • Like
Reactions: JayFoxRox
Masochism is forbidden. Stick to Ubisoft games to fulfill your "cinematic experience" needs.
 
A 3DS Emulator on a Wii U? Really?
I mean, we got the Virtual Consoles of NES - DS. But trying to add a 3DS Emulator on a Wii U seems 'ech' since the 3DS is still in stores for 5 years.

If the Wii U is being sold at a profit currently having a 3DS emulator available on it could help hardware sales. Plus if a homebrew 3DS emulator becomes available on Wii U maybe it'll motivate Nintendo to do the same.

EDIT: I guess you're saying it could hurt 3DS hardware sales which is true but 3DS will still be the only way to play the games in autostereoscopic 3D.
 
Last edited by HaloBenish,
Does Nintendo make any money on the hardware anyway?
Historically, I believe consoles were sold at a loss to make it up on games and accessories.
 
Guys, you are derailing the topic again.
- If you want to talk about WiiU homebrew you should do so in the appropriate place.
- If you want to talk about possible ways to rescue the WiiU that's also another topic.
- And if you want to talk about the pros/cons of emulation for the original system that's also a seperate topic.

To settle this: If there is homebrew on WiiU, possibly even a port of Linux, it can be done.
If there is Linux already, then this should just work the same way as it works on any other Linux (with proper MMU etc.). Again: No jit + software rendering = slow.
Without Linux however, there will be lots of work to port it, probably too much to even think about it.

It appears to me that there is very limited homebrew on WiiU anyway (I only see 2 apps listed on most homebrew wikis, and those might not even be running natively). From what I remember Nintendo was pushing into HTML5 direction for homebrew and we won't run Citra in HTML5..
Without proper native homebrew it's impossible to port it anyway.
Even if you were crazy enough to apply for a proper SDK to create a commercial emulator it would not work because it would violate too many TCRs and the system is probably locked down severly (= no jit, no good dynamic shader generation, ... = slow. too slow).

And no, there is no homebrew killer app which will boost WiiU hardware sales (except for easy piracy access possibly). And no, this wouldn't push Nintendo into doing it officially..
Normal users don't care about homebrew - we are talking about a (very tiny) niche here. Just forget about it.

//Edit: It should be common knowledge / forum etiquette, but I better say it again:
Do NOT respond to this message in this thread. Just send me a private message / conversation instead to keep this thread clean. Thanks.
 
Last edited by JayFoxRox,
  • Like
Reactions: LG_
That "other citra" fixed petalburg. It had to do with a language issue I think. I thought you worked on "other citra"?


Wow! What was changed for 51f4a9f? Menus are running 100% speed now and there's like a 2-4 fps increase! (Yo-Kai)
Do you mean the Chinese build by "other citra"? I work only for the official one.
 
In case of Citra the same interpreter (high level code) will run on x86 and ARM. Where it performs better depends on a lot of factors. It's hard to compare performance across archs anyway.
Also, I'm not sure what kind of "linux [..] specific compiler changes" you are talking about. Citra works fine on Linux.
It also uses cmake so chances are that will take care of cross-compiling if that's what you intend to do.
(However, Nyap only asked about compatibility with that board. And except for the shader jit there shouldn't be anything from preventing that. The board should be capable of running Linux and compiling it's own software. There wouldn't be much difference from compiling and running Citra on an x86 desktop PC probably)
so it would work with minor changes, however if the whole emulator was rewritten with the similarities of the 3ds and odroid in mind, then it would work better?
 

Site & Scene News

Popular threads in this forum