SachinVin / citra_android

An Android frontend for the Citra Emulator
GNU General Public License v3.0
574 stars 90 forks source link

How can I donate? #109

Closed EscanorXX closed 5 years ago

EscanorXX commented 6 years ago

Been searching a way to donate and request new features that would definitely rock in the emulator

BreadFish64 commented 6 years ago

https://www.patreon.com/citraemu no guarantee that anyone will work on what you want

EscanorXX commented 5 years ago

@BreadFish64 I want specifically for the Android emulator

HelloOO7 commented 5 years ago

@EscanorXX Well there's and official port going on (judging by the commits in citra-emu/citra), but AFAIK you can't donate to SachinVin if you don't arrange it with them personally. But anyway, you can't just send them money and "request new features". This is an open-source emulator that's being worked on in peoples free time. Anyone who can code can contribute with whatever they think the emulator should have, that's how open-source works. The PC Citra team uses donations mostly for testing consoles and games, sometimes, they set up a survey on their Patreon and you can select which feature you'd like to see in future releases. If you want anything added to the Android repo, learn to code or wait until someone's willing to add it themselves. The issue tracker state right now is people saying "why not workado on my poweful xioami", "add savstatez" "\<ranting about a widely known issue>" but that's not what it's for. New features get added overtime by various people who deliberately choose to spare their time to work on an emulator and they get a sense of pride and accomplishment and nothing more from it. If you are expecting someone to write a dynarec for citra-android for a donation, that's probably not going to happen. Even though there's SOME documentation on the x86 one, writing a new recompiler for ARM would take months, so donating even $1000 would not suffice for that (as one person would have to code full-time to not go insane). That's the point of open-source - citra was written by 153 people in total and that's the official repo only. There's Cemu or RPCS3, where the devs get sky-high amounts of money for working on their emulators full-time, but that's not what's happening with Citra. I am not discouraging you from donating to SachinVin as they definitely deserve a beer or two, but if you request "30 fps pokemon plz" and it's for some absolutely nefarious reason not appearing after a year, it's no surprise.

EscanorXX commented 5 years ago

@HelloOO7 thank you for all the information. I'm kinda new in the town (Emulation process and all) and I wanted to help a bit followed with 2 ideas to implement. I didn't really know the big work behind all that. I didn't want to devalue SachinVin's work with my words, I'm fully grateful about everything going on here. And sorry If I sometimes post the type complain posts I'm kinda hyped about the fact that I can actual play pokemon 3ds games in my phone too.

HelloOO7 commented 5 years ago

Well if you've got any features to suggest that are features (not optimizations, those are way harder and get in overtime) and aren't completely dumb (like, not even the official Citra has savestates, how would they work on Android), you can tell us and maybe someone will implement them. If you want some emu core improvements, that would be up to SachinVin, but if it's something regarding the Java frontend, me or M220 could look into it as well. We've actually pushed some nice UX updates (default button layout, correct in-game date and time), but they aren't yet compiled into a release and it looks like there's something wrong with the CI build (was it you who said they were crashing?). Here's one that I've compiled a few weeks ago that worked on a virtual machine (I don't have an Android device nearly capable of running Citra).

app-release.zip

If you've got anything reasonable to suggest for a new version, you don't need to donate (but it's nice of you anyway). That's why open-source is awesome.

EscanorXX commented 5 years ago

@HelloOO7 The updates are focused in the features.

Suggestion 1: Is there any possibility to use single game configurations? I mean every game I tested requires different combinations in the setup to run at it's best performance. What do you think? (Source is psp android emulator)

Suggestion 2: Is it possible to add buffered rendering and simulate block transfer effects? I know is not that easy. But would it improve anything?

Questions:

How does work the emulated CPU clock speed?

What's the V-Sync?

HelloOO7 commented 5 years ago

Yes, it's possible, though a little workaround-y. We'd probably need to make multiple config.ini files and switch them on game launch. Either that or rewrite Citra config loading. I could do the first option, but I dunno if @SachinVin would be happy with such a solution. Nice idea though, I'll definitely look into it, but no sooner than tomorrow.

No. Simulated block transfer effects are most possibly PSP specific and buffered rendering would require us to make a lot of changes to the GLES backend (I don't know it that would be possible, it's pretty hacky as is), not to mention it probably is not needed here (from what I remember, buffered rendering was used in PPSSPP to fix issues with specific games and Citra's renderer is game-neutral). And let's be honest, I know nothing about GL programming and SachinVin isn't the best in class at it either (or that he's not an expert in GLES at least).

Questions:

  1. Emulated CPU clockspeed is probably (don't quote me on that) a leftover from Dolphin. As I am aware, there's no such setting in PC Citra.

  2. V-sync synchronizes the game's framerate to your monitor's to prevent screen tearing at the cost of variable input lag. Not relevant as most games can't reach good framerates anyway.

SachinVin commented 5 years ago

The ideal solution here(obviously) would be to fix the issues without users having to change the configuration (and as @HelloOO7 said I barely know GL). And I don't really see which settings could be changed without getting a massive performance hit and make games work. Rewriting the config loading part should be fairly simple as well, (maybe by just appending the game's name to the config file and load it?)

PS. the emulated clockspeed is the "frame limit" setting in citra, it sounded close enough so i just used the dolphin's string

HelloOO7 commented 5 years ago

On a second thought, is per-game config really necessary? The few games I own on the 3DS run all fine on Citra on default settings. There's not really much to change. Maybe upscaling level based on how demanding the games are but that's out of question with the current state of the emulator.

Anyway, it looks like config.cpp in the JNI looks for sdl2_config which I think is configured somewhere in R.java? In that case, it would probably be best to make separate inis for games by Title ID (like 00055d00, that's Pokémon X iirc) if the user click on "edit per-game config" on long-press game icon and makes changes, then we would reroute sdl2_config to the right file.

I don't do C++ though, so it could get a little hacky.

So, summed up, main outcome is - is per-game config a useful thing in Citra?

PS: How would we get the TitleID from the NCCH? Yes, I know I can load a big DataInputStream, skip to Title ID's location in header, readUnsignedShort(), then toHexString(), but that sounds way too hacky to me. What I found is, in game_info.cpp, you can use ReadProgramId to read the major and minor (don't remember how exactly is it called) ID to a variable, how much better is this than a DIS?

BreadFish64 commented 5 years ago

yuzu has per-game config already, and it's really not hard. this probably end up in upstream before long (this is also way off-topic)

BreadFish64 commented 5 years ago

@EscanorXX I am the "official" android guy

HelloOO7 commented 5 years ago

@BreadFish64 Wait, you're the one from the reddit thread with the video from the guy who calls JIT "djit"! Is the official Android version the one maintained in citra-emu/citra/src/Android? Asking to know where to contribute.

EscanorXX commented 5 years ago

@HelloOO7 Okay, I thought that the simulated block transfer and Buffered rendering maybe could help the project improving something, guess I'm just a noob. 😂 I will be looking foward to GL programming.

@SachinVin Following your words the objective is to fix the issues and free the users from having to change the configuration, that's great! I said it because there are games that have the inverted colour bug and other games don't have it, so I thought that maybe the single game configurations would help. And I remember that pokemon games didn't open until I disabled the shaders. But these shaders used to be work great in other games. So, thought It would be helpful in that case

@BreadFish64 Explain yourself please. You gave me limited info about you. You are the official Android guy from what? (I'm interested)

BreadFish64 commented 5 years ago

@HelloOO7 yuuup

@EscanorXX I'm the person "in charge" of making the official Citra app for android. Not to diminish @SachinVin's work, but we don't want people downloading APKs from a fork forever.

EscanorXX commented 5 years ago

Yayyyy @BreadFish64 can you give us a sneak peek? How is it going? You mean that you only will release the apk when it runs stable?

HelloOO7 commented 5 years ago

Oh come on, not this again. You migh not know, but programs on Android aren't just muh apkz. They also have a source, an open one in this case. If you want a sneak peek, clone the source and compile it, but there's not much done right now. You'll have to be patient. If you accidentaly stumbled upon a guy going by the name "Simply Austin" saying "StRAiGhT FRom TeH hOrSE's MoUtH this will be available in a month or two", let me tell you something, he's a liar and most youtubers with a focus on emulation don't know what they're talking about ("djit", lol). Sorry to say that, but you'll have to play on your 3DS for the time being. And it will be superior to a phone for years to come.

EscanorXX commented 5 years ago

@HelloOO7 Alright, thank you🙏🏾

BreadFish64 commented 5 years ago

Yeah right now it's just a blank screen with an orange button lol. There's a ways to go.