Citra on android is a possible or impossible dream?


#1

Is it or is it not possible? :slight_smile:


Citra Now Has A Game Compatibility Wiki!
#2

Not anytime soon. It needs new / more features in the JITs, requires a new graphics backend probably, an all new GUI and possibly more. It should be fairly simple to get it to work on Android, but it would be very unoptimized and run horrible (to the point it’s existence would be useless for users).
Expect slowness and graphical issues due to bad drivers for years to come too.


#3

Well I made it “work”: https://github.com/uberhalit/CitraTouchControl

Works fine if your network connection is fast, here’s a demonstration: http://a.pomf.cat/rqiutm.webm


#4

That’s not was OP was asking for though (which may have been OPs fault? Maybe your solution is better suited than my reply). Your proposed solution is merely a video stream / remote control making it possible to remotely play Citra from Android, however, it’s not “Citra [running] on android”.

Technically 2 very different things.

As PCs are less and less popular / being replaced by other device classes, this will be useless in a couple of years when people don’t really have powerful PCs anymore / no host to stream from. The trend is clearly going towards heterogeneous computing and powerful mobile computing devices (currently smartphones).

So in the broader sense the question OP is asking is (intentionally or not): “will Citra work on non-PCs in the future?” [particularly Android - which comes in a lot of flavors] - and the answer to that is: it needs a lot of work.


#5

[quote=“JayFoxRox, post:4, topic:791, full:false”]
That’s not was OP was asking for though (which may have been OPs fault? Maybe your solution is better suited than my reply). Your proposed solution is merely a video stream / remote control making it possible to remotely play Citra from Android, however, it’s not “Citra [running] on android”.[/quote]
Well OP will have to decide his intention.

[quote=“JayFoxRox, post:4, topic:791, full:false”]
As PCs are less and less popular / being replaced by other device classes, this will be useless in a couple of years when people don’t really have powerful PCs anymore / no host to stream from. The trend is clearly going towards heterogeneous computing and powerful mobile computing devices (currently smartphones).[/quote]
People are talking about that since 30 years now, still powerful gaming PCs are as relevant as ever. Microsoft is even giving up on the console-platform by merging their next console with PCs and Windows 10. The future “Consoles” could be fast ITX-PCs with super-small form factor cases and standard Win10, which are already getting more and more popular in the PC-building scene.

A mere phone will never be the top performer because as performance of desktop PCs rise demand for more computing/graphical power in new games will rise too so phones will never be able to catch up to the necessary performance.

Running your games in a Cloud and streaming it to a TV / mobile device (cloud gaming service like LiquidSky) wont be established on a broader scale because of one very simple thing: input lag.


#6

I m sorry but it is a stupid question. It is a possible (impossible is not the right word to use) but this emulator is still in early development. It will be playable on Android maybe in 3 -5 years… Maybe less. If they are surprise us. I am not into Android or iPhone for this emulator at all. It is better for PC/MAC and if you want it on a go as portable. Get 3DS. I am not surprise that many people here don’t have 3DS and wants to playing illegal roms on emulators. :slight_smile:


#7

That’s exaclty… 100% unrelated to what the topic is about. You can control your PC and any game/application using lots of different apps already, that doesn’t mean in ANY WAY that you’re REALLY running those games/applications on the device. Also, this kind of anwser will lead people to think that there is an android build version/build already (as if we don’t have enough false-flagging on Youtube already).


#8

Your point is?

Do you think nobody with a decent PC wants to play Citra on Android? Or do you think I don’t understand the propose of my own github project?

Obviously Citra doesn’t run on the mobile device, however you can still play 3DS games via your mobile device much like an Android port of Citra would enable you to. I just didn’t want to spend the next 5+ years waiting for an Android port which runs all games at full speed when current BE is fast enough already (at least on my system).


#9

My point is that your answer don’t fit the OP question, and is misleading in some ways (not your fault, but the regular Citra user don’t even know how to use a computer correctly).


#10

(Sorry for the small offtopic:)

What you are describing are effects of heterogenous computing platforms: a console is not much different from a PC anymore. This was something that started with the original Xbox [harddrive and upgradable] and PS2 [Linux-by-design] and continued with XNA etc. on Xbox 360 [basicly giving people a chance to develop programs with typical APIs easily makes it a very generic computing device]. This is even more evident today with tools like Unity which allow cross-platform development even for consoles which were usually locked down.

While this change doesn’t affect non-architecture specific software (high abstraction), it affects emulators (with custom JITs, dynarecs, certain expectations and niche features in renderering APIs etc.).

Modern, abstracted software design is not good for emulators as the flexibility is necessary to reproduce a very specific behaviour. Yet it’s very good for portability and processors / computing platforms will adapt [towards being fully heterogeneous].
(Also see Makimoto Wave: The standardization is slowly moving more logic into hardware)

I believe it is unlikely that x86 / PCs will survive another 30 years (in the form we currently use them). For most programs it’s easy enough to just recompile to a different architecture. The PC market literally went from everybody getting a PC in the 90ies to people having a new smartphone / tablet every year and slowly getting rid of their PCs. Architecture changes don’t affect the users but it will affect emulation.


What we should worry about is direct support for these new architectures and how to handle the ongoing abstraction. (by creating good interfaces to the hardware, implementing logic which might be abstracted (renderer) in software, taking into account parallelization of new platforms etc.)

Otherwise we might as well conclude that we could support EVERY platform by remote controlling a PC-based server in a datacenter somewhere (which is more likely than desktop computing for private users for the future - imo). But as you concluded: it’s not an ideal solution for other reasons.

In fact, if we preserve a platform, not by making its logic portable, but by depending on another platform (x86 PC, like we do now), we might as well simply preserve a handful of 3DS in a clean-room and make them accessible via a fast network.


@uberhalit I still like your effort in adding another way to play 3DS games to the arsenal. It might even help us create better user interfaces for alternative platforms in Citra, however, it’s orthogonal to emulation / preservation and actual Android support / portability.


#11

People who were never really into gaming will mostly replace office/multimedia PCs and Laptops with Phones/Tablets/Android-Players now because these devices can finally be used for (at least some) productivity besides entertainment. However the core gaming (non-casual/occasional) industry is booming again (Witcher 3, CS:GO, Overwatch, Fallout 4). Phones/tablets as a gaming platform are mostly frowned upon.

Ye I get what you are saying (although that would be quiet a cool project).

[quote=“JayFoxRox, post:10, topic:791”]however, it’s orthogonal to emulation / preservation and actual Android support / portability.
[/quote]
This should by no means be an attempt to replace a true Android port. I mainly coded it for myself and thought why not sharing it with the community.


#12

I have been trying, and it is definitely possible.


We need to : 1. Export Source code to a project. 2. Debug it. 3. Compile it to an APK.

The 1st & the 3rd is definitely possible. But the second one is reeeaallly hard. I am nearly done, but I am missing the dynarmic,boost,iconv.h,sdl2.h . However it will be very slow.


Can any one help ?


#13

@JayFoxRox U are right, but the demand is so severe that people will adjust to that as well.


#14

You obviously have no clue what you are talking about. It isn’t a simple ‘recompile’.

Dynarmic won’t run on Android. Full stop. It will take a great deal of adaptation for a platform like that. Dolphin, the Wii/GC emulator is only ramping up Android support now, and they have been around for, what, 10 years?

You are going to have design an entirely new frontend, ensure that it runs on the dreadfully broken Clang version Android now uses. Plenty of code is broken by this, even including some conflicting constants between the arm headers for Android, and Citra’s internal stuff.

Finally, CMake isn’t all that well supported for Android (yet). You are going to need to rewrite those/port to Gradle. Not fun.

Have fun.


#15

Lol @pokemongva you are so wrong… XDDD

As Selby pointed out, Dynarmic won’t run that easy on Android. Literally Full stop.

The “clang” version Android uses it’s a mess, you need to keep an eye on what you import, and what you use, sometimes you can literally break 1000 lines of code, just by change one word in a Gradle file to allow you to use std::to_string xD

And Android Make, it’s a pain in the ass, the easiest way to do it it’s Gradle, and you’ll end up making prebuilt versions of each library if you really want to use them without have a real issue dealing with the Android NDK.

And yeah, now add it all to a Gradle file… https://github.com/Kloen/citra-android/blob/master/app/build.gradle

I mean once I added Boost library, I had to drop an entire arch from the list, and I only managed to compile and use the soon to be removed old logger of Citra. The core and most of the code outside that, have a lot of issues to deal with if you want them to compile and work like a charm. Both visual and input needs to be redone from scratch, and you’ll need to drop dynarmic or fix it, which isn’t an easy job btw.


#16

I thought so, I’ve dropped the project completely. Its of no use until Citra is able to run without Dynarmic


#17

no need to wait till citra is able to run without Dynarmic. It already is able to run without it. It was running without it before Dynarmic was included. Dynarmic is just the JIT recompiler that is preferred over Dyncom intepreter, the old default cpu core. and dyncom is still actively supported. The problem with the JIT being on android, is similar to the issue with the JIT being on x86_32, though not as hopeless. The JIT was designed to run on x86_64, not on any other arch. it is possible to run it on x86_64 android, if you can actually get the compiler to compile the code. But most android devices use ARM, with newer ones using ARM ARCH64. a completely new JIT needs to be designed to target ARCH64(i doubt anyone would want to work on ARM 32), or Dynarmic need to be heavily modified to run on ARCH64 and use its instructions. Dyncom is much easier to work with on android, even on the old ARM. you just need the C++ compiler to work well.
Dynarmic on 32bit x86 is probably impossible now. even someone made it, i doubt anyone with write access to the main repo would allow it in there.


#18

Can in future citra will be available for Android.


#19

This question has already been answered, please don’t necro-post.


#20